Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2012, 12:38
Новичок на форуме
Отправить личное сообщение для ImpulsGraw Посмотреть профиль Найти все сообщения от ImpulsGraw
 
Регистрация: 05.02.2011
Сообщений: 7

Не правильная последовательность выполнения
Здравствуйте! Есть код, состоящий из функции и её вызова(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), чего быть не может.
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2012, 13:25
Профессор
Отправить личное сообщение для Dmitriyff Посмотреть профиль Найти все сообщения от Dmitriyff
 
Регистрация: 22.07.2012
Сообщений: 164

функция postServerRequest не возвращает значения, следовательно alert будет выводить undefined

а быть это может потому, что запрос асинхронный
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2012, 13:28
Профессор
Отправить личное сообщение для Dmitriyff Посмотреть профиль Найти все сообщения от Dmitriyff
 
Регистрация: 22.07.2012
Сообщений: 164

собствено callback function(res__) для того и передается, чтобы обработать результат после выхода из функции

вот тут почитайте
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2012, 15:47
Новичок на форуме
Отправить личное сообщение для ImpulsGraw Посмотреть профиль Найти все сообщения от ImpulsGraw
 
Регистрация: 05.02.2011
Сообщений: 7

а как тогда задержать выполнение функции до вызова callback?
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2012, 16:57
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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;
});
}
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2012, 22:31
Новичок на форуме
Отправить личное сообщение для ImpulsGraw Посмотреть профиль Найти все сообщения от ImpulsGraw
 
Регистрация: 05.02.2011
Сообщений: 7

Всё решилось достаточно просто) На самом деле, важен не алерт, а резуальтат функции, алерты расставил для проверки.

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;
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery, последовательность выполнения операция vadim525 jQuery 5 30.07.2011 21:46
Последовательность выполнения функций nematod Общие вопросы Javascript 7 25.02.2011 03:16
Google Chrome перерисовка страницы во время выполнения скрипта Dekart Javascript под браузер 0 08.06.2010 08:35
Последовательность выполнения в динамическом js sovka Общие вопросы Javascript 2 18.10.2008 15:58
разное время выполнения операции ropowek Events/DOM/Window 2 08.10.2008 13:27