我在等待ajax完成时遇到问题。
我需要查看选择列表的所有选项(有5个列表) 单击“Select1”中的选项后,它会加载(或刷新)“Select2”控件,在此处单击某个选项并加载“Select3”,依此类推......
所以,我需要在循环中等待,直到加载了必要的内容。
我已经阅读了$.when
,但我不知道启动了哪些ajax请求,并且不能这样做:
var myAjax = $.ajax({ ... });
$.when(myAjax).then(...);
另外,我见过ajaxSuccess
/ ajaxStop
,但不知道如何让它在我的情况下运作。
这是我的代码
$('selector1').each(function (i, v1) {
$(v1).mouseup(); // launch loading
// need to wait till 'selector2' elements load
$('selector2').each(function (i, v2) {
$(v2).mouseup(); // launch
// .. wait ..
$('selector3').each(function (i, v3) {
$(v3).mouseup(); // launch
// .. wait ..
$('selector4').each(function (i, v4) {
$(v4).mouseup(); // launch
// .. wait ..
$('selector5').each(function (i, v5) {
// ... do something
});
});
});
});
});
更新
我需要从网站(不是我的)获取有关轮子的信息,使用来自控制台的这个javascript,所以这些ajax请求不是我写的,我不知道他们从哪里加载,他们只是开火,当我用js单击一个选项。我需要等到他们完成。
我使用ajaxSuccess记录了ajax请求的url,它们是:
/netcat/podbor.php?key=113224Select1
/netcat/podbor.php?key=113224Select2
/netcat/podbor.php?key=113224Select3
/netcat/podbor.php?key=113224Select4
答案 0 :(得分:0)
尝试为您的ajax请求使用done
设置。也就是说,不是只调用Ajax请求,而是附加.done(function())。
它看起来像这样:
$.ajax({
// arguments of the ajax request
}).done(function() {
//things to do once the ajax request is finished
});
您可以在the jQuery.ajax() documentation上看到一些示例。
答案 1 :(得分:0)
Vemonus答案正是您所需要的,但是在等待多个ajax请求完成时使用的选项是jQuery's when。像这样:
$.when(
$.ajax({}),
$.ajax({})
).then(function() {
// code after ajax requests complete
});