在我的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代码?您的建议非常值得赞赏。
答案 0 :(得分:3)
选项1:您始终可以将AJAX调用设置为同步,但请等待响应时整个页面卡住。只需将参数async:false添加到您的参数集中。
选项2:提供回调或将未来的代码放入成功处理程序
选项3 :您可以使用此处所述的延期/承诺http://blog.mediumequalsmessage.com/promise-deferred-objects-in-javascript-pt1-theory-and-semantics