【发布时间】:2010-12-16 09:15:37
【问题描述】:
我有一些 Javascript JQuery 代码每 5 分钟对服务器进行一次 Ajax 调用,这是为了保持服务器会话处于活动状态并保持用户登录。我在 JQuery 中使用$.ajax() 方法。这个函数似乎有一个“错误”属性,我试图在用户的互联网连接出现故障时使用它,以便 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 调用时检测网络连接问题?
【问题讨论】:
-
你是拔掉客户端的网线还是服务器的网线?
-
断开连接后是否继续收到“成功”提示?
-
@Jeff - 导致问题的原因是客户端的 Internet 连接丢失。令人难以置信的是,这实际上正在发生,因为一些客户使用该应用程序的无线连接不可靠,并且不断掉线。有句谚语“永远不要低估最终用户想方设法破坏您的应用程序的能力”,这里绝对正确 :-)
-
@qwertypants - 不,一旦互联网连接中断(例如拔下电缆),什么都不会发生。尽管进行了 $.ajax 尝试,但我可以在 Firebug 中看到它。
-
有没有办法设置连接尝试的超时时间?
标签: javascript ajax jquery