在单个页面中使用多个 jquery ajax 请求的问题

你好,我正在开发一个 PHP 项目,我需要使用 ajax 请求加载一些请求。以下是我的请求功能。


功能一:当showNotify事件被点击时,我调用ajax请求来获取内容并使用ajaxStart来显示旋转器,直到内容完全准备好!


 //* First click load nofication

$(document).on('click', '#showNotify', function() {

    let check = $(this).data('check');

    if(check === 0) {

        //* Process notification

        $(this).attr('data-check', 1);

        

        //* Load ajax request

        $(document).ajaxStart(function() {

            $('#notify-wait').show();

        });


        $(document).ajaxComplete(function() {

            $('#notify-wait').hide();

            $('#list-noti').show();

        });


        $.ajax({

            url: '/list-dd-notifications',

            method: 'GET',

            success: function() {

                $('#notif-unread').hide();

            }

        });

    }

});

功能二:我需要从服务器端检查用户是否有新的未就绪通知并显示新的通知标志。


function checkNewFotify() {

    $.ajax({

        url: '/check-notifications',

        method: 'GET',

        success: function(data) {

            if(data) {

                if($('#notif-unread').is(":hidden"))

                {

                    $('#notif-unread').show();

                }

            }

            else

            {

                if($('#notif-unread').is(":visible"))

                {

                    $('#notif-unread').hide();

                }

            }

        }

    });

}


//* check for new notification

setInterval(() => {

    checkNewFotify();

}, 5000);

问题:每当 showNotify 首先下拉时,它都会向旋转器显示加载程序,直到请求完全加载,如果checkNewFotify函数正在执行的工作是每 5 秒刷新一次以检查服务器是否有新通知,则showNotify中的 ajaxStart将受到影响每次 checkNewFotify在后台刷新时显示旋转加载程序。


请问我怎样才能阻止它显示旋转加载器,同时它每 5 秒刷新一次。


撒科打诨
浏览 75回答 1
1回答

紫衣仙女

将 ajax 上的全局选项设置为 falsecheckNewFotify()将阻止像 ajaxStart 这样的处理程序触发。$.ajax({    url: '/check-notifications',    method: 'GET',    global: false,});
打开App,查看更多内容
随时随地看视频慕课网APP