【发布时间】:2014-02-10 16:03:39
【问题描述】:
在我的 javascript 文件中,我使用上面的函数异步获取服务器计算的值:
function function2(userid)
{
$.ajax({
type: "POST",
url: "http://localhost/bghitn/web/app_dev.php/get_number_of_articles",
data:{id:userid},
cache: false,
success: function(data){
return data;
}
});
}
其实我在一组函数里面调用function2:
function1();
var userid=.....
var x= function2(userid);
function3(x);
问题:
如您所见,function3 使用function2 返回的数据。但似乎function3 在 AJAX 调用成功完成之前开始执行。我尝试使用when 函数但徒劳无功。
$.when(function2(userid)).done(function(){
function3();
});
在前面的AJAX请求成功执行后,如何让下一个javascript代码执行?非常感谢您的建议。
【问题讨论】:
-
Ajax 是异步的,这是行不通的。将回调传递给函数并在 ajax 完成时执行它。
-
您的第二次尝试几乎成功,但您必须兑现承诺。
return $.ajax(...) -
谢谢大家。@JanDvorak 提供的链接非常有用
-
@JanDvorak,我以为我上次理解你,但事实上,我没有。我试过你的话,但徒劳无功。接受的答案中的第三个选项背后的想法是否相同?
标签: javascript php jquery ajax symfony