Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.08.2010, 19:44
Новичок на форуме
Отправить личное сообщение для Иван Алексеев Посмотреть профиль Найти все сообщения от Иван Алексеев
 
Регистрация: 13.08.2010
Сообщений: 4

Обращение к глобальной переменной из 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?
Ответить с цитированием
  #2 (permalink)  
Старый 13.08.2010, 20:02
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

$(function (){
   var abc;
   $.ajax({'url': './filename', 'type': 'GET', 'dataType': 'json', 'cache': false, success: function (data) {
      abc = data.x;
alert (abc);
   }});
   
});


На момент вызова алерта запрос ещё не выполнен и новое значение не получено.
Ответить с цитированием
  #3 (permalink)  
Старый 13.08.2010, 20:12
Новичок на форуме
Отправить личное сообщение для Иван Алексеев Посмотреть профиль Найти все сообщения от Иван Алексеев
 
Регистрация: 13.08.2010
Сообщений: 4

Нет. В Вашем примере алерт показывает правильное значение, запрос выполнен и данные получены.
Ответить с цитированием
  #4 (permalink)  
Старый 13.08.2010, 20:21
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Цитата:
На момент вызова алерта запрос ещё не выполнен и новое значение не получено.
Это я писал про Ваш код, почему он не работает.
А в моём всё правильно.
Ответить с цитированием
  #5 (permalink)  
Старый 13.08.2010, 20:44
Новичок на форуме
Отправить личное сообщение для Иван Алексеев Посмотреть профиль Найти все сообщения от Иван Алексеев
 
Регистрация: 13.08.2010
Сообщений: 4

Так, я понял. Весь код, который следует после $.ajax(...), выполняется сразу же, не дожидаясь завершения запроса.
А как этого можно избежать? Мне нужно сначала получить данные, и уже потом продолжать с ними работу.
Ответить с цитированием
  #6 (permalink)  
Старый 13.08.2010, 20:49
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Все действия осуществлять в callback'-е запроса. Этого всегда достаточно. Если у Вас не получается, значит, неправильный подход.

Хотя есть вариант сделать синхронный запрос (выставить async: false), но тогда браузер подвиснет до того момента, пока не будет получен ответ.
Ответить с цитированием
  #7 (permalink)  
Старый 13.08.2010, 20:56
Новичок на форуме
Отправить личное сообщение для Иван Алексеев Посмотреть профиль Найти все сообщения от Иван Алексеев
 
Регистрация: 13.08.2010
Сообщений: 4

Хорошо. Все понятно.
Спасибо за помощь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамически загружаемая jQuery и jQuery-функции в одном файле 67bytes Общие вопросы Javascript 6 06.03.2013 09:01
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55
jquery - Как получить полный путь? kirill.adw jQuery 5 20.11.2009 17:40
JQuery + FireFox NOOB jQuery 4 02.11.2009 18:16
Как правильно подгрузить jQuery Siton jQuery 4 15.06.2009 09:54