jQuery AJAX получил данные, равные нулю вне обработчика успеха - PullRequest
0 голосов
/ 22 марта 2011

Рассмотрим пример кода:

var source = null;

$.ajax({
    [...],
    success:function(data)
    {
        source = data;
        alert(source);
    }
});

alert(source);

Теперь: внутри обработчика успеха все в порядке, я получаю правильные данные из веб-службы, и все просто замечательно. Но как только JS покидает $ .ajax и завершает работу с ним, переменная source снова становится нулевой.

Скажи мне, почему. Это должно быть что-то специфическое для JavaScript, с чем я не знаком : /

Ответы [ 2 ]

4 голосов
/ 22 марта 2011

Возможно, вы забыли, что AJAX асинхронный.Переменная source будет undefined до тех пор, пока обратный вызов success не будет завершен.

Выполнение alert(source) под этим кодом (за пределами $.ajax()) почти гарантированно будет undefined.

0 голосов
/ 22 марта 2011

Хорошо, вы уверены, что обратный вызов успеха вызывается до того, как сработает сигнал за пределами вызова ajax?

Вызов ajax является асинхронным и немедленно возвращается.

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