Области видимости
Здрасти) Функция должна возвращать результат ответа, который содержится в переменной 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, время: 14:20. |