Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Область видимости переменных (https://javascript.ru/forum/misc/34645-oblast-vidimosti-peremennykh.html)

positiveman 13.01.2013 18:06

Область видимости переменных
 
Необходимо получить переменную data из анонимной функции.

$.post("ui.php", { "action":"test"},
        function (data) {
                console.log(data); // все отлично!
        }, "json");
    console.log(data); // undefined

Deff 13.01.2013 18:28

Видимость получить можно, но Post - функция ассинхронная(обычно)
Поэтому обработка - вызов Ваших функций по получению данных data, а там их и передать не проблема параметром функции..
а так window.data = data - вот и видимость, которая имхо бесполезна.

positiveman 14.01.2013 14:04

Я нашел решение! Нужно использовать функцию $.ajax, у нее есть параметр async, который выставляем "false", тогда скрипт должен ждать выполнения функции, а нужную переменную объявляем в глобал.

deivan 14.01.2013 15:08

это решение сгодится, когда запрос один и короткий.
а если нужно опрашивать сервер десятками запросов, то в синхронном режиме приложение мощно повиснет.

лично я пихаю результаты асинхронного запроса в какой-нить удобный элемент ДОМ, а при проверке результата изначально смотрю, есть ли в этом элементе что-то. Если есть обрабатываю, если нет - жду через сетТаймаут и т.д.


Часовой пояс GMT +3, время: 14:12.