可靠的方式来检查互联网连接或AJAX请求之后
Reliable way to check the Internet connection for or after an AJAX requests?
是否有办法在AJAX请求或操作后获得错误代码之前检查Internet连接?应该使用Javascript或JQuery进行测试。
我试过导航器。在线,但效果不好。如果没有连接,它也返回true。
在开始AJAX请求之前不知道如何处理这个问题。下面是在jQuery.ajax
中使用.error
实现相同功能的另一种方法。伪代码
var timeInterval = 5000,
step = 1,
timeOutID;
function DoSomething() {
$.ajax({
//...
timeout: 5000;
//...
}).done(function (data) {
step = 1; // reset delay
//process your data
}).error(function (xhr, status, error) {
//Houston in the blind!
if (status == "timeout") {
if (timeOutID) window.clearTimeout(timeOutID);
timeoutID = window.setTimeout(function () {
DoSomething();
}, (timeInterval * step++)); //to increase delay on each consecutive call
}
});
}
这是因为根据jQuery文档,我们有一个textStatus == "timeout"
error Type: Function(jqXHR jqXHR, String textStatus, String . error错误抛出)
请求失败时调用的函数。函数接收jqXHR(在jQuery 1.4中)。x, XMLHttpRequest)对象描述发生的错误类型的字符串和可选的异常对象,如果发生的话。第二个选项的可能值参数(除
null
外)有"timeout"
、"error"
、"abort"
"parsererror"
。HTTP错误发生时,errorThrown接收HTTP状态的文本部分,如"未找到"或"内部"服务器错误。"
使用Vanilla JS
var timeInterval = 5000,
step = 1,
timeOutID;
function DoSomething() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
step = 1; // reset delay
//process your data
}
};
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");
xhr.timeout = 5000; // this is not our variable "timeInterval", its the request timeout
xhr.ontimeout = function () {
if (timeOutID) window.clearTimeout(timeOutID);
timeoutID = window.setTimeout(function () {
DoSomething();
}, (timeInterval * step++));
}
xhr.send(json);
}
相关文章:
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- 如何使用get或post方法连接和执行ajax
- 发送jquery-ajax$.post后重置连接
- 如果在include文件中使用连接,Jquery ajax调用将不起作用
- AJAX和phpJSON连接DB和retern值
- 关闭 AJAX 调用上的连接
- AJAX PHP 连接将行插入数据库
- 通过Ajax调用PHP文件中的MySQL连接singleton对象
- AJAX连接到本地主机
- C/SSL/JQuery.ajax() 客户端 - >服务器连接重置,但发送了 1 个字节
- AJAX 后请求和字符串连接
- 脱机时对多个 AJAX 请求进行排队,在连接返回时发送
- 当互联网连接丢失时,如何从 Ajax 调用中获取信息
- 如何通过AJAX调用检查网络连接
- 使用 JavaScript/AJAX 连接两个 XML 文件
- 在 Knockout.js 中连接 AJAX 调用
- Ajax 调用返回“找不到类”错误,即使已定义数据库连接也是如此
- 使用 AJAX 和 PHP(在 Apache 上)实现 Comet 会断开连接
- 不能连接一个 ajax 中的 javascript 变量,而另一个 ajax 内部的 javascript 变量
- 连接Ajax下载"GET"