我有一些 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/