Не правильная последовательность выполнения
Здравствуйте! Есть код, состоящий из функции и её вызова(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, время: 10:09. |