在我的 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代码?非常感谢您的建议。
最佳答案
选项 1:您始终可以将 AJAX 调用设置为同步,但要做好在等待响应时整个页面卡住的准备。只需将参数 async: false 添加到您的参数集中即可。
选项 2:提供回调或将 future 的代码放入成功处理程序中
选项 3:您可以使用此处描述的 defer/promise http://blog.mediumequalsmessage.com/promise-deferred-objects-in-javascript-pt1-theory-and-semantics
关于javascript - 如何使函数返回通过 AJAX 检索的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682015/