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

时间:2013-08-21 16:54:04

标签: javascript jquery ajax

我有一个加载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 个答案:

答案 0 :(得分:8)

发出请求时将global设为false:

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

请参阅Ajax.Events文档。

答案 1 :(得分:3)

<强> DEMO

试试这个

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

希望这有帮助,谢谢

答案 2 :(得分:1)

在Ajax选项中使用global: false,使请求不会触发任何global event handlers

$.ajax docsglobal选项:

  

设置为false,以防止触发ajaxStartajaxStop等全局处理程序。

来自.ajaxStart docs

  

如果在$.ajax()选项设置为global的情况下调用false ...,则.ajaxStart()方法不会触发。

答案 3 :(得分:0)

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

参考ajax

相关问题