LINUX.ORG.RU

Как «увидеть» параметр?


0

0

Запрос создан с использованием библиотеки jquery

function checkDataInDB(o,n) {

resp = 'yes';

$.get(«checkDataInDB.php», function(data){ alert(«Data Loaded: » + data); resp = 'no'; });

alert (resp);

}

resp='no' - не работает, т.к. находится не в той области видимости. Как её «увидеть» внутри $.get()???

Что-то такое нужно?

var a = 10;
disp_a();

function disp_a()
   {
   a = 20;
   alert("Value of 'a' inside the function " + a);
   }
alert("Value of 'a' outside the function " + a);

RR
()

resp = 'yes';

// 1. Запрос ушел, но выполнение кода пошло дальше.
$.get(«checkDataInDB.php», function(data){ alert(«Data Loaded: » + data); resp = 'no'; /* 3. Точка два уже отработала. Опоздали */ });

// 2. Выполнится перед возвращением результата запроса (не факт, но скорей всего.
alert (resp);

Итог: Неправильно спроектирован алгоритм, без понимания механизма асинхронных запросов.

urxvt ★★★★★
()

Единственное, что приходит на ум: проверять, что вернулось в data, и соответственно делать alert('yes') или alert('no'). По-другому в принципе не получится

Photon79
()

>resp='no' - не работает, т.к. находится не в той области видимости.

Если не пришло 404, то всё прекрасно работает и находится где надо. Надо только подождать:)

Воткни setTimeout('alert(resp)', 10000) вместо последней строчки с алертом.

А вообще в jquery есть события вида «завершения запроса», вот после них и работай с resp.

anonymous
()
Ответ на: комментарий от Photon79

>А если запрос будет выполняться больше 10 секунд?

То надо вписать 15000. Я вообще это написал просто для примера того, что оно работает как надо, и переменная видна.

Для дальнейшей работы надо естественно переделывать логику с учётом асинхронности.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.