原生Ajax设置超时时间和JQuery两种写法
Ajax分原生和JQuery两种写法,设置超时时间时单位为毫秒,异步请求可以设置超时时间,但同步请求不能设置超时时间一、原生Ajax写法
function AJAX_OBJ(url) {
var xmlHttp = {};
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
var status = xmlHttp.status;
if (status == 200) {
var text = xmlHttp.responseText;
console.log("Ajax send success "+text);
} else {
console.log("状态不正确,为: " + status);
}
}
};
xmlHttp.open("GET", "https://www.yizuotu.net/", true);
xmlHttp.timeout=500;
xmlHttp.ontimeout=function(){
console.log("Ajax request timeout");
};
xmlHttp.setRequestHeader('content-type','application/x-www-form-urlencoded');
xmlHttp.send(null);
}
function request(url, data, success_callback,error_callback) {
var xhr = $.ajax({
type: "POST", //提交数据的类型 POST GET
url: "https://www.yizuotu.com/", //提交的网址
data: data, //提交的数据
timeout:10000, //设置超时的时间10s
async:true, //请求方式 true异步请求(默认) false同步请求
//返回数据的格式
datatype: "json", //"xml", "html", "script", "json", "jsonp", "text".
xhrFields: {
withCredentials: true
},
crossDomain: true,
//在请求之前调用的函数
beforeSend: function () {},
//成功返回之后调用的函数
success: function (response) {
success_callback(response);
},
//调用执行后调用的函数,无论成功或失败都调用
complete: function (XMLHttpRequest, textStatus) {
if(textStatus == 'timeout'){
if (error_callback != null && error_callback != "") {
error_callback();
};
}
},
//调用出错执行的函数
error: function () {
console.log("error"); //请求出错处理
}
});
}
0-未初始化,即尚未调用 open。
1-初始化,即尚未调用 send。
2-发送数据,即已经调用 send。
3-数据传送中。
4-完成。
四、响应错误代码
400 无法解析此请求。
403 禁止访问:访问被拒绝。
404 找不到文件或目录。
405 用于访问该页的 HTTP 动作未被许可。
406 客户端浏览器不接受所请求页面的 MIME 类型。
407 Web 服务器需要初始的代理验证。
410 文件已删除。
412 客户端设置的前提条件在 Web 服务器上评估时失败。
414 请求 URL 太大,因此在 Web 服务器上不接受该 URL。
500 服务器内部错误。