Области видимости
Здрасти) Функция должна возвращать результат ответа, который содержится в переменной data безымянной функции.
function aliasExists(alias, args) { var ret = '123'; $.get('/cp/ajax/alias_exists.php', {'alias': alias, 'args': args}, function(data, textStatus) { alert(ret) //выведет 123 ret = data; alert(ret) //выведет содерщимое data } ); alert(ret) //выведет 123 return ret; } |
Ну так правильно callback сработает, только тогда, когда сервер ответит, а return функцией будет возвращён сразу.
Поставьте таймер и выведете ret и посмотрите, что он вам покажет. |
function aliasExists(alias, args) { var ret = '123'; $.get('/cp/ajax/alias_exists.php', {'alias': alias, 'args': args}, function(data, textStatus) { ret = data; } ); setTimeout('alert(ret)', 2000); return ret; } Спустя 2 секунды пишет в консоле ошибок файрбага ReferenceError: ret is not defined |
Первый параметр у setTimeout и setInterval это функция или же строка, содержащая имя функции.
(function(){ var ret = 1; setTimeout(function(){ alert(ret); }, 1000); ret = 2; })() А теперь, что бы было более понятнее, тут выводиться два alert теперь запусти и быстро закрой первый alert, потом посмотри значение второго, запусти второй раз и перед тем как закрыть первый, подожди две секунды и посмотри результат. (function(){ var ret = 1; setTimeout(function(){ alert("setTimeout: " + ret); }, 2000); alert("function: " + ret); ret = 2; })() |
БЛЕАТЬ!!! Сколько можно! Одни и те же грабли! Учи основы!!!
Цитата:
|
Работает, спасибо)
А как мне лучше реализовать мою функцию? Через таймаут возвращать значение? - Как-то неверно... |
BallsShaped,
Я смотрю ты сразу кулхацкером родился? |
project1,
Нет, подумай над логикой, помучившись вскоре поймёшь. Ты просто к решению задачи подходишь не с той стороны. |
Skipp,
Просто я не до конца знаю всех особенностей javascript'a. Может попытаться сделать запрос синхронным? Тогда пока ответ не придёт, дальше ничего не выполнится. Но это тоже неверно как-то... Можешь хотябы намекнуть на правильный подход? :) |
Цитата:
|
Часовой пояс GMT +3, время: 04:34. |