【发布时间】:2014-10-21 04:07:30
【问题描述】:
我试图在我的页面上显示 ajax 调用期间的加载微调器。我想针对不同的 ajax 调用并显示不同的微调器。就目前而言,由于 ajaxStart 是一个全局事件,所有 ajax 调用最终会同时显示所有微调器。
这可行...它将“加载”类添加到包含微调器的隐藏 div 并显示它。
$(document).bind("ajaxStart", function () {
$body.addClass("loading");
});
$(document).bind("ajaxStop", function () {
$body.removeClass("loading");
});
现在从其他堆栈答案中,我看到您可以将命名空间添加到 ajaxstart/stop (jQuery should I use multiple ajaxStart/ajaxStop handling)
......沿线
$(document).bind("ajaxStart.secondCall", function () {
$body.addClass("loading2");
});
$(document).bind("ajaxStop.secondCall", function () {
$body.removeClass("loading2");
});
但这不适用于当前形式。任何指导将不胜感激...
更新:
作为对 ILYAS 解决方案的补充,并根据他的指导,我在我的 AJAX 调用中实现了 AJAX 启动功能 ....
function sendResponse(thread_id){
$(document).off(".reference_call");
$(document).on("ajaxStart.secondCall", function () {
$('.spinner').show();
});
$.ajax({
url: 'someURL.php',
type: 'post',
data: {
//data
},
success: function(data) {
$(document).on("ajaxStop.secondCall", function () {
$('.spinner').hide();
});
//do stuff....
} else {
//do stuff....
}
}
});
return false;
}
【问题讨论】:
-
你确定你的回调没有触发吗?这是简单的jsfiddle 按预期工作。
-
伊利亚,感谢您的评论。问题是我希望第一组函数将加载类附加到主体,而第二个函数在单独的时间为单独的 ajax 调用发生。目前,该页面上的任何 ajax 调用都会调用两者 - 我确实理解为什么会发生这种情况,但我不知道如何分别针对同一页面上的不同 ajax 调用
-
哦,我明白你的意思了。所以,我有 2 个问题:你能移动关于在 ajaxStart 和 ajaxStop 回调中显示什么微调器的逻辑吗?如果没有 - 您是否尝试过在发送请求之前绑定到 ajax 事件,然后在请求完成后解除绑定?
-
Ilya,关于绑定 - 这是我考虑过的,但我无法让它工作 - 这是因为我对 jquery 还很陌生,我确定不是因为它不起作用。虽然这听起来像是用勺子喂食 - 如果你能用一个例子来指出我正确的方向,如果你不胜感激的话,你将如何实现它......
-
这里,我已经更新了我的jsfiddle,如果这和你想要的一样,我会给出答案。