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, время: 21:32. |