我在同一页面上有几个jQuery .ajax调用,如:
$.ajax({
url: "page1.php",
cache: false,
success: function(html) {
//do some stuff with returned html
}
});
当我运行页面时,有些可能无法完成。我猜它们都是在同一时间开始的。
我有没有办法让他们排队,以便按特定顺序开火,直到前一个完成?
答案 0 :(得分:2)
你可以链接它们,如下:
$.ajax({
url: "page1.php",
cache: false,
success: function(html) {
//do some stuff with returned html
},
complete: function(xhr) {
// do your next call
}
});
等待第一个完成,然后再制作下一个。一个更好的方法是这样做:
var waiting = 0;
// for each request:
waiting++;
$.ajax({
url: "page1.php",
cache: false,
success: function(html) {
// save the returned stuff in an array
},
complete: function(xhr) {
if (--waiting <=0) { // == would probably suffice, but i like to be safe.
//process the result
}
}
});
这减少了加载时间,并允许您按顺序处理它。
答案 1 :(得分:1)
是的,您可以按照编写代码的方式执行此操作。通过在第一个回调函数中进行下一个AJAX调用,您可以链请求:
$.ajax({
url: "page1.php",
cache: false,
success: function(html) {
// Make another call here
$.ajax({
url: "page1.php",
cache: false,
success: function(html) {
// and so on
}
});
}
});
答案 2 :(得分:0)
AjaxQueue插件救援!
答案 3 :(得分:0)
您可以查看允许您对请求进行排队的following plugin。