javascript - JQuery Ajax - 如何在进行 Ajax 调用时检测网络连接错误

标签 javascript ajax jquery

我有一些 Javascript JQuery 代码每 5 分钟对服务器进行一次 Ajax 调用,它是为了保持服务器 session 事件并保持用户登录。我正在使用 $.ajax() JQuery 中的方法。这个函数似乎有一个“错误”属性,我试图在用户的互联网连接中断时使用它,以便 KeepAlive 脚本继续运行。我正在使用以下代码:

var keepAliveTimeout = 1000 * 10;

function keepSessionAlive()
{
    $.ajax(
    {
        type: 'GET',
        url: 'http://www.mywebapp.com/keepAlive',
        success: function(data)
        {
            alert('Success');

            setTimeout(function()
            {
                keepSessionAlive();
            }, keepAliveTimeout);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            alert('Failure');

            setTimeout(function()
            {
                keepSessionAlive();
            }, keepAliveTimeout);
        }
    });
}

当我运行它时,我会在屏幕上每隔 10 秒在警告框中弹出“成功”,这很好。然而,当我拔下网络电缆时,我什么也没得到,我期待调用错误函数并看到“失败”警告框,但什么也没发生。

我假设“错误”功能仅适用于从服务器返回的非“200”状态代码是否正确?有没有办法在进行 Ajax 调用时检测网络连接问题?

最佳答案

// start snippet
error: function(XMLHttpRequest, textStatus, errorThrown) {
        if (XMLHttpRequest.readyState == 4) {
            // HTTP error (can be checked by XMLHttpRequest.status and XMLHttpRequest.statusText)
        }
        else if (XMLHttpRequest.readyState == 0) {
            // Network error (i.e. connection refused, access denied due to CORS, etc.)
        }
        else {
            // something weird is happening
        }
    }
//end snippet

关于javascript - JQuery Ajax - 如何在进行 Ajax 调用时检测网络连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1730692/

相关文章:

javascript - Testcafe - 处理视频

JavaScript 正则表达式下划线不起作用

javascript - 如果用户硬编码 url,则保持用户登录状态

jquery - 当我在 jQuery ajax-post 指向的操作方法上使用 HttpPost 属性时,获取 "The resource cannot be found."

javascript - Node JS .shift() 'ing 一个由 const 初始化的数组

javascript - 如何在ajax javascript中获取数组(不是json)的值

javascript - 捕获和编辑回调函数的响应

javascript - 如何在 jquery 对话框上正确加载 html 代码?

javascript - 第 n 个子级的 Jquery 变量

javascript - 使用 jquery/php 在 mysql 中进行内联更新