powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC, JavaScript: почему асинхронный запрос срабатывается со второго раза?
6 сообщений из 6, страница 1 из 1
ASP.NET MVC, JavaScript: почему асинхронный запрос срабатывается со второго раза?
    #39306536
Solomka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задам вопрос на примере регистрирования нового пользователя.
Допустим надо при регистрировании нового пользователя проверять чтобы не было новых пользователей с одинаковым логином.


Этот метод на сервере:
Код: c#
1.
2.
3.
4.
5.
6.
7.
 [HttpGet]        
public string CountUsersWithThisLogin(string TestUserName)        
{            
// тут вычисляется количество записей в БД с таким логином              
return new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(returnedApruvedNames);
       
}




А вот как воевать на клиенте никак не пойму?

Дошла до такого, что добавила отедльное поле для хранения количества переменной.
Код: html
1.
 <input style="visibility: visible" name="countUsersWithThisLogin" id="countUsersWithThisLogin" value="" />



В процессе проверки всех остальных полей на ввох проверяем поле ввода логина:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
CheckIsExistUserWithThisUserName();
var ccx =$("#countUsersWithThisLogin").val();
var checkingIsExistUserWithThisUserName = ccx == "0" ? true : false;
alert("Как прошла проверка: " + checkingIsExistUserWithThisUserName);
if (checkingIsExistUserWithThisUserName!=true ) 
{
alert("Пользователь с таким логином уже существует!" + $("#countUsersWithUsersName").val());
return false;
}

Эта функция  которая вызывает асинхронный запрос:

function CheckIsExistUserWithThisUserName() 
{
var sUN = $("#Login").val();
var url = '/User/CountUsersWithThisLogin/un=' + sUN;
//alert(url);

            
var func = function(data) 
{
var products = $.parseJSON(data);
$("#countUsersWithThisLogin").val(products);
alert("Количество пользователей с таким логином: " + products);
if (products === "0") 
{
return true;
} else {
//alert("Пользователь с таким логином уже существует");
return false;
}
};
$.get(url, func);
}



Без использования текстового поля в которое записывается количество пользщователей с таким же логином, функция всё время не правильно работает.
А если с использованием текстового поля, то работает с запаздованием на один раз.
То есть если в первый раз мы проверяем несуществующий логин. то проверка не проходится, а если второй раз мы протестим существующий или несуществующий логин, то по любому проверка проходится.

вот какая-то мелочь, но не понимаю, как её обойти?
...
Рейтинг: 0 / 0
ASP.NET MVC, JavaScript: почему асинхронный запрос срабатывается со второго раза?
    #39306683
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolomkaЗадам вопрос на примере регистрирования нового пользователя.
Допустим надо при регистрировании нового пользователя проверять чтобы не было новых пользователей с одинаковым логином.
Под "при регистрировании" что конретно понимается? Момент непосредственного ввода логина? Или ввели логин, и перешли к другому полю? Или ввели все данные и отослали их на сервер?
...
Рейтинг: 0 / 0
ASP.NET MVC, JavaScript: почему асинхронный запрос срабатывается со второго раза?
    #39306694
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по данному коду:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
1. CheckIsExistUserWithThisUserName();

2. var ccx =$("#countUsersWithThisLogin").val();
3. var checkingIsExistUserWithThisUserName = ccx == "0" ? true : false;

4. alert("Как прошла проверка: " + checkingIsExistUserWithThisUserName);

5. if (checkingIsExistUserWithThisUserName!=true ) 
6. {
7.   alert("Пользователь с таким логином уже существует!" + $("#countUsersWithUsersName").val());
8.   return false;
9. }


Вы не понимаете что такое асинхронный запрос.

В строке 1 Вы вызываете функцию CheckIsExistUserWithThisUserName , внутри которой отправляете запрос серверу для вычисления количества записей в БД с указанным логином.
Пока данный запрос идёт на сервер и там обрабатывается, то выполняется код в строках 2, 3, 4.

При втором вызове данного кода в поле #countUsersWithThisLogin содержится результат первого запроса и у Вас складывается впечатление, что происходит какое-то запаздываение.
...
Рейтинг: 0 / 0
ASP.NET MVC, JavaScript: почему асинхронный запрос срабатывается со второго раза?
    #39306755
Solomka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСудя по данному коду:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
1. CheckIsExistUserWithThisUserName();

2. var ccx =$("#countUsersWithThisLogin").val();
3. var checkingIsExistUserWithThisUserName = ccx == "0" ? true : false;

4. alert("Как прошла проверка: " + checkingIsExistUserWithThisUserName);

5. if (checkingIsExistUserWithThisUserName!=true ) 
6. {
7.   alert("Пользователь с таким логином уже существует!" + $("#countUsersWithUsersName").val());
8.   return false;
9. }


Вы не понимаете что такое асинхронный запрос.

В строке 1 Вы вызываете функцию CheckIsExistUserWithThisUserName , внутри которой отправляете запрос серверу для вычисления количества записей в БД с указанным логином.
Пока данный запрос идёт на сервер и там обрабатывается, то выполняется код в строках 2, 3, 4.

При втором вызове данного кода в поле #countUsersWithThisLogin содержится результат первого запроса и у Вас складывается впечатление, что происходит какое-то запаздываение.

Да Вы правы...
Как теперь можно выкрутиться?
Так чтобы можно было именно делать запрос к серверу на счёт количества записей с таким логином?
...
Рейтинг: 0 / 0
ASP.NET MVC, JavaScript: почему асинхронный запрос срабатывается со второго раза?
    #39306815
Solomka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Спасибо, что дали наводку, а то меня переклинило.
сделала через new XMLHttpRequest()
...
Рейтинг: 0 / 0
ASP.NET MVC, JavaScript: почему асинхронный запрос срабатывается со второго раза?
    #39306916
Vladimir A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solomka,
just my experience

public class PasswordRegisterViewModel
{
[Remote("IsUsernameUnique", "Validation", "Account")]
public string Username { get; set; }
...
}

in controller

public JsonResult IsUsernameUnique([Bind(Prefix = "PasswordRegister.Username")] string username)
{
if (_membershipService.IsUsernamePersisted(username))
{
var msg = string.Format(Messages.USER_WITH_SMTH_SMTH_ALREADY_EXIST, Messages.USERNAME.ToLower(),
username);
return Json(msg, JsonRequestBehavior.AllowGet);
}
return Json(true, JsonRequestBehavior.AllowGet);
}
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC, JavaScript: почему асинхронный запрос срабатывается со второго раза?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]