Не правильная последовательность выполнения
Здравствуйте! Есть код, состоящий из функции и её вызова(JQuery). Но почему-то функция заканчивает своё выполнение в при её вызове прежде, чем закончится весь код в функции и возвращает undefined.
alert(postServerRequest('CHECK_LAST_NEW', {'p1':'5'})); //1
function postServerRequest(sysquest, paramar){
paramar.action = sysquest;
$.post('server.php', paramar, function(res__){
alert(res__); //2
if(res__.indexOf('TRUE') != -1) return true;
else return false;
});
}
Сервер должен обработать запрос и написать TRUE. Сначала показывается сообщение undefined(1), а потом TRUE(2), чего быть не может. |
функция postServerRequest не возвращает значения, следовательно alert будет выводить undefined
а быть это может потому, что запрос асинхронный |
собствено callback function(res__) для того и передается, чтобы обработать результат после выхода из функции
вот тут почитайте |
а как тогда задержать выполнение функции до вызова callback?
|
ImpulsGraw,
Зачем ? вызовите алерт внутри - а тут только запуск (если нужно что запустить - кликните из удачного калбека какую нидь кнопку
postServerRequest('CHECK_LAST_NEW', {'p1':'5'}); //1
function postServerRequest(sysquest, paramar){
paramar.action = sysquest;
$.post('server.php', paramar, function(res__){
alert(res__); //2
if(res__.indexOf('TRUE') != -1) return true;
else return false;
});
}
|
Всё решилось достаточно просто) На самом деле, важен не алерт, а резуальтат функции, алерты расставил для проверки.
function postServerRequest(sysquest, paramar){
var result = '';
paramar.action = sysquest;
var fullparam = {url: 'server.php', data: paramar, success: function(data){
result = data;
}, async: false, type: 'post'};
$.ajax(fullparam);
return result;
}
|
| Часовой пояс GMT +3, время: 07:54. |