我在2个不同的函数中有2 AJAX 调用。我想使用。单击来调用这2个函数。func1是插入数据到数据库中,然后func2是检索数据,所以我的问题是如何等到func1完全完成,然后它只执行func2。
我试过.delay(),它可以工作,但我认为这是一个愚蠢的解决方案。
$("#updateLocation").click(function(e){
e.preventdefault;
func1();
func2();
});
return false;
});
function func1(){
$.ajax({
url:'',
});
});
function func2(){
$.ajax({
url:'',
});
});
7条答案
按热度按时间bfhwhh0e1#
三种方式:
在func1成功时调用func2:
funky完成后使用
Deferred
API调用func2:使func1同步(不推荐):
bwleehnv2#
由于 AJAX 调用是异步的,因此应用程序在Ajax调用完成之前不会“暂停”,而只是立即开始下一个调用。
jQuery提供了一个处理程序,当调用成功时会调用它,如果在调用过程中发生错误,则会调用另一个处理程序。
您将需要从成功处理程序调用第二个 AJAX 函数。
9wbgstp73#
将func 2移动到func 1- AJAX -〉succes callback中
58wvjzkj4#
你可以设置“async”选项为false(对于第一 AJAX 调用)。
这意味着函数2将在函数1收到响应后被调用,即完成其执行。
qlzsbp2j5#
在func1成功时调用fun2
htrmnn0y6#
只需使用ajaxComplete函数,它有3个可选参数,在设置中,参数ajax action URL或者type我们接收到的数据,我们会根据这些数据设置一个条件。
5tmbdcev7#
你也可以像这样将函数作为参数传递: