2011-10-20 188 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

如果你严格要求之情况,在全局范围内定义测试变量中,这样你会得到测试值你可以在代码中的任何地方使用它。