可能重复:
return from a function ajax
JavaScript asynchronous return value / assignment with jQuery
如何将数据变量输出到第二个警告语句。
$.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);
答案 0 :(得分:3)
你做不到。
AJAX是异步的。直到稍后,
才能获得响应。 jQuery.post
调用将开始 AJAX请求,并返回处理请求的jqXHR对象。脚本将继续执行(alert(test)
将触发下一个),然后稍后当AJAX请求完成时(即收到HTTP响应),回调:
function(data) {
alert(data)
test = data;
}
将被执行。
答案 1 :(得分: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请求并分配测试时,您将获得测试值
答案 2 :(得分:0)
如果您对scenerio严格要求,请在全局范围内定义测试变量,这样您就可以在代码中的任何位置使用它。