Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面卸载时停止$.ajax调用_Javascript_Jquery - Fatal编程技术网

Javascript 在页面卸载时停止$.ajax调用

Javascript 在页面卸载时停止$.ajax调用,javascript,jquery,Javascript,Jquery,我有一个程序在超时时运行,以便在后台加载数据: (function getSubPage() { setTimeout(function() { if (cnt++ < pagelist.length) { loadSubPage(pagelist[cnt]); getSubPage(); } }, 500); })(); 我遇到的问题是,如果有任何ajax请求打开,当用户导航离开时,错误处理

我有一个程序在超时时运行,以便在后台加载数据:

(function getSubPage() {
    setTimeout(function() {
        if (cnt++ < pagelist.length) {
            loadSubPage(pagelist[cnt]);
            getSubPage();
        }
    }, 500);
})();

我遇到的问题是,如果有任何ajax请求打开,当用户导航离开时,
错误
处理程序被命中。我试图通过
.stop()
窗口.onbeforeunload
上调用请求来解决这个问题,但我不确定调用哪个对象
.stop()

$.ajax
返回
XMLHTTPRequestObject
,该对象具有
中止
功能。此函数将在请求完成之前停止请求

var xhr = $.ajax({ /*...*/

..
..
/* Later somewhere you want to stop*/
xhr.abort();

阅读更多:

$.ajax
返回
XMLHTTPRequestObject
,该对象具有
.abort
功能。此函数将在请求完成之前停止请求

var xhr = $.ajax({ /*...*/

..
..
/* Later somewhere you want to stop*/
xhr.abort();

阅读更多信息:

jQuery公开了XMLHttpRequest对象的中止方法,因此您可以调用它并取消请求。您需要将打开的请求存储到一个变量中,并调用
abort()

为了阻止它

activeRequest.abort()

jQuery公开了XMLHttpRequest对象的abort方法,因此您可以调用它并取消请求。您需要将打开的请求存储到一个变量中,并调用
abort()

为了阻止它

activeRequest.abort()

这应该很方便。。您有一个jQuery方法来实现这一点。


这应该很方便。。您有一个jQuery方法可以做到这一点。

以下是我根据反馈使用的解决方案:

window.onbeforeunload = function() {            
    for (page in ajaxing) {
        if (ajaxing[page] != null)
            ajaxing[page].abort();
    }
};

var ajaxing = {};

function loadSubPage(page) {
    if (typeof(initSubPages[page]) === "undefined") {
        var ajaxRequest = $.ajax({
            type: "POST",
            url: '/Main/GetPageData',
            data: { page: page },
            success: function (returndata) {
                 // ...
            },
            error: function() {
                alert("Error retrieving page data.");
            },
            complete: function() {
                ajaxing[lot] = null;
            }
        });
        ajaxing[page] = ajaxRequest;
        initSubPages[page] = true;
    }
}

以下是我根据反馈使用的解决方案:

window.onbeforeunload = function() {            
    for (page in ajaxing) {
        if (ajaxing[page] != null)
            ajaxing[page].abort();
    }
};

var ajaxing = {};

function loadSubPage(page) {
    if (typeof(initSubPages[page]) === "undefined") {
        var ajaxRequest = $.ajax({
            type: "POST",
            url: '/Main/GetPageData',
            data: { page: page },
            success: function (returndata) {
                 // ...
            },
            error: function() {
                alert("Error retrieving page data.");
            },
            complete: function() {
                ajaxing[lot] = null;
            }
        });
        ajaxing[page] = ajaxRequest;
        initSubPages[page] = true;
    }
}

我懂了。由于我正在运行超时,我需要一个映射来跟踪这些对象。如果ajax调用在一个变量内,如何发送它?activeRequest.send()??我根据反馈添加了我的解决方案。谢谢我懂了。由于我正在运行超时,我需要一个映射来跟踪这些对象。如果ajax调用在一个变量内,如何发送它?activeRequest.send()??我根据反馈添加了我的解决方案。谢谢