与我刚问的问题类似,
如果我在jQuery中调用ajax函数然后调用非ajax函数,如何在第一个ajax回调函数完成之后阻止非ajax函数触发。在第一个ajax函数中声明async:false是否足够?
答案 0 :(得分:4)
如果你在谈论这个:
$.ajax({...});
someFunction();
在AJAX调用完成之前,someFunction()
不会发生,那么你有三个选择:
async: false
。 不要这样做。这会让你的网页无法响应; someFunction()
放入AJAX调用的完整/成功/错误回调中。这是推荐的方法;或AJAX中的第一个A代表“异步”。您只需要习惯这些调用是异步的事实,并停止尝试在它们之上强制使用同步编程模型。适应新的编程模型。
答案 1 :(得分:1)
jQuery AJAX函数允许您提供仅在请求完成后调用的回调。将您的非ajax函数作为该回调的一部分。
答案 2 :(得分:0)
您可以使用如下回调函数:
$("#btnSample").on("click", function (e) {
$.ajax({
url: 'some_url',
type: "GET",
async: true,
cache: false,
dataType: "JSON",
data: {
"p1": v1,
"p2": v2
},
success: function(result) {
//call you second function here!
}
}
});
});