return в callback
Здравствуйте !
У меня extjs 3. В ext.onready делаю алерт: alert (myfunc()) Получаю undefined. В ф-ции, которая в алерте, находится аякс запрос.
function myfunc(){
Ext.Ajax.request({
url: 'p.php', method: 'post',
callback: function(opts,suss,resp){
var c=1;
return c;
}
})
}
В пхп echo 1. Скажите, почему я получаю undefined ? Почему код в callback не работает, точнее не виден? |
если нужно вывести var c:
https://jsfiddle.net/yp1bgz62/ ps: за пределами callback, переменную c не будет видно. Обычно так не делают. Хотя мож так нужно тебе. |
Цитата:
|
вынеси var c; за пределы myFunc(). и убери var в самой функции, оставив c=1.
|
Цитата:
|
:-E может пивка для рывка?
|
Это же асинхронный вызов. То есть функция myFunc завершает выполнение ДО ТОГО как завершится функция callback. Поэтому myFunc не сможешь выдать с
кстати, у вас в функции myFunc нет даже return))) |
Цитата:
return есть в callback, вы невнимательно смотрели. Но если его вывести за пределы callback, то будет возвращаться совершенно иная переменная. И даже определение её в качестве глобальной не поможет, функция,как вы и сказали,выполнится быстрее ответа с сервера. Видимо мою проблему не решить. Либо решить подключением jQuery или prototype.js |
Цитата:
В функции myFunc нет return, а вы делаете alert (myfunc()), значит что-то ждете из myFunc, у которой нет return)))) |
Цитата:
Вот что я скажу, опцию async: false нельзя использовать. Надо программировать так, чтобы все вызовы были только асинхронные. Опция async: false это на крайний случай или для построения времянки. Нечто аналогичное как goto команда, которой тоже пользоваться нельзя)))) Цитата:
Вам чем не понравилось решение из второго поста? Вот, привожу его повторно:
function myfunc(){
Ext.Ajax.request({
url: '/',
method: 'post',
callback: function(opts, suss, resp){
var c = 1;
return alert(c);
}
})
}
myfunc();
В общем распишите подробнее, тогда есть шанс вам помочь. |
| Часовой пояс GMT +3, время: 02:39. |