获取待处理的POST / GET请求数量

时间:2016-11-02 12:40:11

标签: javascript jquery ajax

使用我当前的项目,我必须检查是否有任何待处理的POST或GET请求。如果仍有待处理的请求,则用户无法导航到另一个页面,但不知何故,我无法弄清楚如何获取待处理请求的数量,如下所示。

enter image description here

我已经尝试了.ajaxComplete()document.readyState,但这些并不是我要找的东西。在互联网上,我找不到这个特定事物的解决方案或功能。

有人可以告诉我在哪找吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

我认为您使用浏览器的开发工具制作的图像。这些信息通常不能通过JS获得。就像@john所说,简单的方法是在启动AJAX请求时递增全局计数器,并在完成时递减它。

我更喜欢包含AJAX-Objects的数组,并查看数组的长度。请求完成后(finally - 函数)从数组中删除此请求。您可以实现一个“杀死”所有待处理请求的按钮。在高级中,您还可以将开始时间放入数组中并显示消耗的时间(如屏幕截图)。

我可以提供代码,但我认为这不是一件大事,更耗时的是将此计数器/数组添加到每个AJAX调用。

答案 1 :(得分:2)

jQuery提供了全局ajax事件处理程序(显式:.ajaxSend().ajaxComplete()),您可以使用它来构建一个简单的全局计数器,就像John建议的那样。

使用此方法,如果代码中出现多次,则不必为每个请求附加处理程序。

var ajaxCounter = 0;
$(function() {
    $(document).ajaxSend(function() {
        ajaxCounter++;
        console.log("New Request! There are " + ajaxCounter + " requests running.");
    }).ajaxComplete(function() {
        ajaxCounter--;
        console.log("Request finished! There are " + ajaxCounter + " requests running.");
    });
});