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

4 回答 4

8

global发出请求时设置为 false:

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

请参阅Ajax.Events文档。

于 2013-08-21T16:58:31.697 回答
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();
    }
    });

希望这有帮助,谢谢

于 2013-08-21T17:16:35.710 回答
1

在您的 Ajax 选项中使用global: false以使请求不触发任何全局事件处理程序

$.ajax文档说明了该选项global

设置为false防止全局处理程序喜欢ajaxStart或被ajaxStop触发。

.ajaxStart文档

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

于 2013-08-21T16:58:32.490 回答
0
$.ajax({
                url: 'Handler.ashx',
beforesend:function(){
// apply your code 
},
                success: function (msg, status, xhr) {
                    $('#loadingDiv').hide();
}.....

参考ajax

于 2013-08-21T16:58:20.837 回答