我在2个差异函数中有2个ajax调用.我想用.click来调用这两个函数.func1将数据插入数据库,然后func2将检索数据,所以我的问题是如何等待func1完全完成然后它只执行func2.
我试过.delay(),它有效,但我认为这是一个愚蠢的解决方案.
$("#updateLocation").click(function(e){
e.preventdefault;
func1();
func2();
});
return false;
});
function func1(){
$.ajax({
url:'',
});
});
function func2(){
$.ajax({
url:'',
});
})?
Run Code Online (Sandbox Code Playgroud)
Exp*_*lls 29
三种方式:
func1成功时调用func2:
function func1() {
$.ajax({ ... }).done(func2);
}
Run Code Online (Sandbox Code Playgroud)
Deferred在funky完成时使用API调用func2:
e.preventDefault();
$.when(func1).then(func2);
Run Code Online (Sandbox Code Playgroud)
使func1同步(不推荐):
function func1() {
$.ajax({url: '', async: false});
}
Run Code Online (Sandbox Code Playgroud)
由于Ajax调用是异步的,因此在ajax调用完成之前,应用程序不会"暂停",只需立即启动下一个调用.
JQuery提供在调用成功时调用的处理程序,如果在调用期间发生错误则调用另一个处理程序.
$.ajax({
url: 'ajax/test.html',
success: function(data) {
$('.result').html(data);
alert('Load was performed.');
},
error :function(jqXHR, textStatus, errorThrown)
{
alert("something went wrong");
}
});
Run Code Online (Sandbox Code Playgroud)
您将需要从成功处理程序中调用第二个AJAX函数.