我有一个使用PHP,jQuery构建的ajax重型Web应用程序。
我正在寻找以下问题的解决方案。
(1)。用户正在浏览器中运行该应用程序。互联网熄灭了。浏览器向服务器发出ajax请求,由于缺少网络,请求显然失败。我想要一种跨浏览器的方式(包括Windows / MAC / Linux)来检测这种失败并向用户显示通知。
(2)。网络开启。浏览器向服务器发出ajax请求,在收到响应之前,网络就会关闭。因此,当服务器发送响应时,客户端处于脱机状态。在这里,我还要向用户显示有关错误的通知。 Gmail做得很漂亮。我写了一封邮件,点击发送,同时拔掉了网线。大约8-10秒后,它会显示一条消息“糟糕...发生了服务器错误,并且未发送您的电子邮件。”
上述问题(2)在MAC上变得更加复杂。我在MAC和Windows上检查了这个案例(我在Windows XP上查看过)。在Windows XP上,如果没有网络,请求会在几秒钟后死亡,但在MAC上,请求不会超过1小时。在这里,我想不出一种方法来检测网络在接收响应时消失并向用户显示此通知?
答案 0 :(得分:2)
$(window).ajaxError(function () {
alert('Oops. Server error occurred.');
});
或
error: function() { }
作为旁注,所有可能知道的是,如果某些事情失败了。浏览器不知道正在运行它的机器是否具有互联网访问权限,或者电缆是否被拉动....它只知道,而你需要做的就是通过上面的处理程序或jquery的错误函数来处理错误情况你的AJAX电话中的参数。
此外,对于#2,显示的gmail错误只是您的请求未成功发送。它与服务器端进程无关。
编辑:有关其他信息(例如设置更短的超时值):
http://api.jquery.com/jQuery.ajaxSetup
请注意,ajaxSetup
的可接受值是此处列出的值: