2013-10-12 7 views
0

Я пытаюсь получить данные после успеха ajax, но это не работает правильно, пожалуйста, помогите мне.Возврат данных после успешного успешного вызова ajax

var aid='11111111V'; 
var dch=0; 
    $.ajax({ 
    type:"POST", 
    url:"new_hpa_fun_aplcval.php", 
    data:"aid="+aid, 
    success: function(msg){ 
     if (msg=='OK'){ 
      dch=1;      
     }else{ 
      dch=2; 
     } 
    } 
    }); 

alert(dch); 
+0

возможно дубликат [Как вернуть ответ от вызова AJAX?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax- call) –

+0

Можете ли вы разместить свой php-файл? Вы наблюдаете какие-либо ошибки консоли, используя инструменты, такие как инструменты firebug/developer? –

ответ

2

По умолчанию вызов AJAX является асинхронным (это то, что первый «А» в AJAX расшифровывается - асинхронный). Это означает, что обработчик успеха будет называться SOMETIME LATER. Таким образом, вы не можете вернуть ответ от вызова AJAX из функции, как вы пытаетесь сделать, потому что значение dch еще не установлено, когда функция возвращается.

Вместо этого вы должны перестроить свой код, чтобы любой код, требующий ответа от вызова ajax, был либо в обработчике успеха, либо вызван из обработчика успеха (и вы передаете ему результат ajax). Вы просто не можете написать простой последовательный процедурный код с асинхронными вызовами ajax. Вы должны изучить новый способ структурирования вашего кода для работы с асинхронным вызовом AJAX.

var aid='11111111V'; 
$.ajax({ 
    type:"POST", 
    url:"new_hpa_fun_aplcval.php", 
    data:"aid="+aid, 
    success: function(msg) { 
     var dch = 0; 
     if (msg =='OK'){ 
      dch=1;      
     } else { 
      dch=2; 
     } 
     // put your code here that uses the result of the AJAX call 
     alert(dch); 
    } 
}); 
Смежные вопросы