Область видимости переменных
Необходимо получить переменную 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, время: 20:32. |