2011-10-20 184 views
0

可能重複的:
return from a function ajax
JavaScript asynchronous return value/assignment with jQuery範圍JavaScript變量

你如何將數據輸出變量第二alert語句。

 $.post("index.ajax.php", { lookup:value }, 
     function(data) { 
      alert(data) 
      test = data; 
     }) 
     alert(test) 

還是有可能做這樣的事情?

function confirm_search(input) { 
    $.post("index.ajax.php", { lookup:input }, 
    function(data) { 
     $("#temp").val(data); 
    }) 
} 

var test = confirm_search(value); 
alert(test); 

回答

3

你不能。

AJAX是異步的。直到一段時間後才能應答。

jQuery.post呼叫將開始的AJAX請求,並返回處理請求的jqXHR對象。該腳本將繼續被執行(alert(test)下將火),然後一段時間後當AJAX請求已經完成(即,HTTP響應被接收),回調:

function(data) { 
    alert(data) 
    test = data; 
} 

將被執行。

0

試試這個方法:

var test; 
$.post("index.ajax.php", { lookup:value }, 
    function(data) { 
     alert(data) 
     test = data; 
}) 

function alertTest(){ 
    if(test != undefined) { 
    alert(test); 
    clearInterval(t); 
    } 
} 

var t = setInterval(alertTest, 1000); 

當Ajax請求完成且測試被分配

0

如果你嚴格要求之情況,在全局範圍內定義測試變量中,這樣你會得到測試值你可以在代碼中的任何地方使用它。