Обращение к глобальной переменной из jQuery
Добрый день.
Имеется следующий код:
$(function (){
var abc;
$.ajax({'url': './filename', 'type': 'GET', 'dataType': 'json', 'cache': false, success: function (data) {
abc = data.x;
}});
alert (abc);
});
Объявляем переменную abc, при помощи $.ajax() получаем данные, присваиваем переменной abc новое значение, но оно не сохраняется. Подскажите, пожалуйста, что нужно сделать, чтобы присвоить новое значение переменной abc? |
$(function (){
var abc;
$.ajax({'url': './filename', 'type': 'GET', 'dataType': 'json', 'cache': false, success: function (data) {
abc = data.x;
alert (abc);
}});
});
На момент вызова алерта запрос ещё не выполнен и новое значение не получено. |
Нет. В Вашем примере алерт показывает правильное значение, запрос выполнен и данные получены.
|
Цитата:
А в моём всё правильно. |
Так, я понял. Весь код, который следует после $.ajax(...), выполняется сразу же, не дожидаясь завершения запроса.
А как этого можно избежать? Мне нужно сначала получить данные, и уже потом продолжать с ними работу. |
Все действия осуществлять в callback'-е запроса. Этого всегда достаточно. Если у Вас не получается, значит, неправильный подход.
Хотя есть вариант сделать синхронный запрос (выставить async: false), но тогда браузер подвиснет до того момента, пока не будет получен ответ. |
Хорошо. Все понятно.
Спасибо за помощь. |
| Часовой пояс GMT +3, время: 05:05. |