Странное поведение с функцией обратного вызова ajax - PullRequest
1 голос
/ 29 декабря 2010

при попытке установить переменную из функции обратного вызова ajax я получаю непредсказуемые результаты:

var logged_in=false;

function check_response(response,el) {
logged_in=true; 
alert(logged_in); //outputs TRUE
}

makePOSTRequest("/is_logged.php", check_response); //when ready call check_response() with the XML response
alert(logged_in); //first time outputs FALSE;
alert(logged_in); //second time outputs TRUE;
  1. Я запускаю POSTRequest, чтобы проверить, является ли мой пользователь logged_in.
  2. POSTRequest вызывает функцию check_response () для анализа ответа и установки переменной logged_in в значение TRUE.
  3. Далее, когда я пытаюсь использовать переменную logged_in , это: 1-й раз FALSE; тогда ИСТИНА ...

Вы знаете, почему происходит такое странное поведение?

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Поскольку «makePOSTRequest» является асинхронным, поэтому первое «alert» после этого метода показывает «false», потому что это значение по умолчанию для переменной, установленной ранее, и когда вы вызываете alert, вы фактически «блокируете» выполнениевторое предупреждение, и к этому времени запрос завершается, и для параметра "logged_in" устанавливается значение true.

0 голосов
/ 29 декабря 2010

Одинакова ли проблема при передаче 0 или 1 вместо true или false?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...