Область видимости переменных
Необходимо получить переменную data из анонимной функции.
$.post("ui.php", { "action":"test"}, function (data) { console.log(data); // все отлично! }, "json"); console.log(data); // undefined |
Видимость получить можно, но Post - функция ассинхронная(обычно)
Поэтому обработка - вызов Ваших функций по получению данных data, а там их и передать не проблема параметром функции.. а так window.data = data - вот и видимость, которая имхо бесполезна. |
Я нашел решение! Нужно использовать функцию $.ajax, у нее есть параметр async, который выставляем "false", тогда скрипт должен ждать выполнения функции, а нужную переменную объявляем в глобал.
|
это решение сгодится, когда запрос один и короткий.
а если нужно опрашивать сервер десятками запросов, то в синхронном режиме приложение мощно повиснет. лично я пихаю результаты асинхронного запроса в какой-нить удобный элемент ДОМ, а при проверке результата изначально смотрю, есть ли в этом элементе что-то. Если есть обрабатываю, если нет - жду через сетТаймаут и т.д. |
Часовой пояс GMT +3, время: 12:05. |