Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2014, 13:45   #1
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию результат post-запроса в переменную

Код:
$.post('/', data, function(result){
   $("#container").html(result); 
   val = result;     // здесь val = 1234 
});

// здесь val = undefined
Результат выполнения запроса успешно помещается в контейнер, а вот переменной val он хоть и присваивается, но область видимости не позволяет использовать ее за пределами функции post.

Как поместить результат в переменную, чтобы использовать его в других частях кода?
Mortimoro вне форума Ответить с цитированием
Старый 21.10.2014, 14:34   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Нужно чтобы код выполнялся не после отправки результата запроса, а после получения результатов. Для этого используются коллбеки (последний аргумент функции post - это как раз коллбек).

Вот как ваш код работает:
Код:
var val="";
console.log("before request", val);
$.post("/", data, function(res) {
    console.log("answer from server");
    val = res;
    console.log(val.toString());
})
console.log("after request", val);
Будет в консоли:
Код:
//тут мы просто выводим пустую переменную
>> "before request, ""
//далее, мы послали запрос, но ответа от сервера ещё нет. а код-то не ждёт и идёт выполняться дальше:
>> "after request", ""
//наконец-то пришёл ответ от сервера, вызывается функция-коллбек и выводится результат:
>> "answer from server"
>> "[object Object]"
^-.-^ My GitHub

Последний раз редактировалось Fenex; 21.10.2014 в 14:40.
Fenex вне форума Ответить с цитированием
Старый 21.10.2014, 15:58   #3
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

Хм... об этом я не подумал. А как мне проверить что прилетело? Все это дело у меня заключено в функцию, то есть я вызываю функцию checkData(data), она должна выполнить post-запрос и в зависимости от возвращенных данных вернуть true/false. Опять же, если я выполню return из $.post, то это будет возврат из коллбека, а не из самой функции checkData.
Mortimoro вне форума Ответить с цитированием
Старый 21.10.2014, 16:13   #4
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Я бы использовал $.Deferred()
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 21.10.2014, 17:24   #5
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

Нахрапом Deferred не поддался - консоль на его объявление ругается. Пока что извратился без переменной, если вдохновение будет, то позже поиграюсь с Deferred еще. Благодарю за разъяснение моей ошибки.
Mortimoro вне форума Ответить с цитированием
Старый 21.10.2014, 19:16   #6
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

создай функцию, вызови ее в колбэке поста и будет тебе счастье
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 21.10.2014, 21:11   #7
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Цитата:
Нахрапом Deferred не поддался - консоль на его объявление ругается.
jQuery должен быть 1.5 или выше.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
результат запроса записать в переменную hunter03 Помощь студентам 3 08.10.2012 20:50
Результат запроса в переменную $T@LKER C# (си шарп) 10 29.03.2011 18:17
результат запроса в переменную..Как? Iber Общие вопросы .NET 1 01.11.2009 04:18
Cохранить результат запроса в переменную EugeneIsmatulin Общие вопросы Delphi 2 10.06.2009 13:48
Результат запроса sql в переменную dll32 БД в Delphi 9 26.05.2009 15:02