阻止 .ajaxStart() 在特定的 Ajax 请求上执行

4

我有一个加载 div加载器,它应该在 Ajax 请求期间显示。

$('#loadingDiv').ajaxStart(function () {
        $(this).show();
    }).ajaxComplete(function () {
        $(this).hide();
    });

我希望在所有Ajax请求期间显示加载器,但在特定请求中禁止它。
我尝试了以下方法:
$.ajax({
                url: 'Handler.ashx',
                success: function (msg, status, xhr) {
                    $('#loadingDiv').hide();
}.....

但是这个 div 出现了然后又消失了,我不希望它出现。
4个回答

8

在进行请求时,将global设置为false:

$.ajax({
    url: 'Handler.ashx',
    global: false,
    ...
});

请参见Ajax.Events文档。


3

点此查看演示

试试这个

 $.ajax({
                    url: 'Handler.ashx',
                   beforeSend:function(){
                 if (<conditon>)                /// check your condition here
                     $('#loadingDiv').show();
                     else
                       $('#loadingDiv').hide();
                    },
                    success: function (msg, status, xhr) {
                        $('#loadingDiv').hide();
    }
    });

希望这可以帮助您,谢谢。


1
在您的Ajax选项中使用global:false,以使请求不触发任何全局事件处理程序$.ajax文档关于global选项的说明:

将其设置为false可防止触发全局处理程序,例如ajaxStartajaxStop

来自.ajaxStart文档

如果使用设置为falseglobal选项调用$.ajax(),则.ajaxStart()方法将不会触发。


0
$.ajax({
                url: 'Handler.ashx',
beforesend:function(){
// apply your code 
},
                success: function (msg, status, xhr) {
                    $('#loadingDiv').hide();
}.....

参考 ajax


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接