小编典典

对特定请求禁用ajaxStart()和ajaxStop()

ajax

我正在使用.ajaxStart()和.ajaxStop()在提出ajax请求时显示模式。(在开始和停止之间)

现在,我想添加一个longpoll函数,该函数一直等待通知,类似于本网站左上角的通知。

我的问题现在在于仅针对longpolling请求禁用此模式。

在处理程序上注册“加载屏幕”:

$(document).ajaxStart(handleAjaxStart);
$(document).ajaxStop(handleAjaxStop);

我的longpoll函数:

$.ajax({
    timeout: 35000,
    url: longPollUrl,
    success: function(data){
        if(data.queCount) $('#numQueCount').html(data.queCount);
        if(data.queAccept) $('#numQueAccept').html(data.queAccept);
    }, 
    dataType: 'json',
    complete: longpoll
});

我试过了:

$().off('ajaxStart');
$().off('ajaxStop');

..并在开始轮询后重新连接处理程序,但没有任何乐趣。

我还尝试向其中引入一个全局变量handleAjaxStart(),该变量将在函数的第一行返回,但这似乎完全破坏了加载屏幕。

有什么想法可以实现吗?


阅读 427

收藏
2020-07-26

共1个答案

小编典典

我想到了..

options对象中.ajax()有一个名为的属性global

如果设置为false,则不会触发ajaxStart该呼叫事件。

$.ajax({
    timeout: 35000,
    url: longPollUrl,
    success: function(data){
        if(data.queCount) $('#numQueCount').html(data.queCount);
        if(data.queAccept) $('#numQueAccept').html(data.queAccept);
    }, 
    global: false,     // this makes sure ajaxStart is not triggered
    dataType: 'json',
    complete: longpoll
});
2020-07-26