基本上我试图调用一个函数(函数1),它从另一个函数(函数2)得到结果。这个函数2正在进行ajax调用。
所以代码就像这样:
function f1 () {
var results = f2();
}
function f2() {
$.ajax({
type: 'POST',
url: '/test.php',
success: function(msg){
}
});
}
我知道我在成功功能中显示警报,我得到了结果。但是我们怎样才能让这个结果被发回?
我试图在功能2中做这样的事情但没有成功:
return msg;
感谢您的帮助
答案 0 :(得分:4)
理论上,这可以使用jQuery的async: false
设置。该设置使调用同步,即浏览器等待直到完成。
但这被认为是不好的做法,因为它可以冻结浏览器。您应该重新构建脚本,以便在success
回调而不是f1
中执行相关操作。我知道这不如你在f1()
中所做的那么方便,但它是处理Ajax异步性质的正确方法。
答案 1 :(得分:2)
你可以强制使请求同步(有点失去ajax的好处)但是让代码工作:
function f2() {
var ret = false;
$.ajax({
type: 'POST',
url: '/test.php',
async:false,
success: function(msg){
ret = msg
}
});
return ret;
}
否则,如果要保持异步,则必须在success
函数中添加回调..
function f2() {
$.ajax({
type: 'POST',
url: '/test.php',
async:false,
success: function(msg){
doSomething(msg);
}
});
}