我们先来看看异步对象五部曲8FNHTML5中文学习网 - HTML5先行者学习网
这是post请求的、8FNHTML5中文学习网 - HTML5先行者学习网
8FNHTML5中文学习网 - HTML5先行者学习网
//1.00创建异步对象8FNHTML5中文学习网 - HTML5先行者学习网
var xhr = new XMLHttpRequest();8FNHTML5中文学习网 - HTML5先行者学习网
//2.08FNHTML5中文学习网 - HTML5先行者学习网
xhr.open("post", url,params, true);8FNHTML5中文学习网 - HTML5先行者学习网
//3.0将参数使用Formdata属性传递8FNHTML5中文学习网 - HTML5先行者学习网
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");8FNHTML5中文学习网 - HTML5先行者学习网
//4.0设置回调函数8FNHTML5中文学习网 - HTML5先行者学习网
xhr.onreadystatechange = function () {8FNHTML5中文学习网 - HTML5先行者学习网
if (xhr.readyState == 4 && xhr.status == 200) {8FNHTML5中文学习网 - HTML5先行者学习网
alert(xhr.responseText);8FNHTML5中文学习网 - HTML5先行者学习网
}8FNHTML5中文学习网 - HTML5先行者学习网
}8FNHTML5中文学习网 - HTML5先行者学习网
//5.0传递参数8FNHTML5中文学习网 - HTML5先行者学习网
xhr.send(params);8FNHTML5中文学习网 - HTML5先行者学习网
8FNHTML5中文学习网 - HTML5先行者学习网结合get请求做一个异步对象的封装8FNHTML5中文学习网 - HTML5先行者学习网
get 请求中的8FNHTML5中文学习网 - HTML5先行者学习网
xhr.setRequestHeader("If-Modified-Since", "0"); 是为了清除缓存8FNHTML5中文学习网 - HTML5先行者学习网
而post请求的8FNHTML5中文学习网 - HTML5先行者学习网
8FNHTML5中文学习网 - HTML5先行者学习网
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");8FNHTML5中文学习网 - HTML5先行者学习网
8FNHTML5中文学习网 - HTML5先行者学习网是为了传输方式8FNHTML5中文学习网 - HTML5先行者学习网
在<from method='post' type="">8FNHTML5中文学习网 - HTML5先行者学习网
<from>中的type可以得到三种方式,其中包括application/x-www-form-urlencoded8FNHTML5中文学习网 - HTML5先行者学习网
8FNHTML5中文学习网 - HTML5先行者学习网
8FNHTML5中文学习网 - HTML5先行者学习网
var ajaxHelp = {8FNHTML5中文学习网 - HTML5先行者学习网
CreatXHR: function () {8FNHTML5中文学习网 - HTML5先行者学习网
//创建异步对象8FNHTML5中文学习网 - HTML5先行者学习网
var xhr = new XMLHttpRequest();8FNHTML5中文学习网 - HTML5先行者学习网
return xhr;8FNHTML5中文学习网 - HTML5先行者学习网
},8FNHTML5中文学习网 - HTML5先行者学习网
//ajax的get请求8FNHTML5中文学习网 - HTML5先行者学习网
AjaxGet: function (url, callBack) {8FNHTML5中文学习网 - HTML5先行者学习网
this.AJaxCommon("get", url, null, callBack);8FNHTML5中文学习网 - HTML5先行者学习网
},8FNHTML5中文学习网 - HTML5先行者学习网
//ajax的post请求8FNHTML5中文学习网 - HTML5先行者学习网
AjaxPost: function (url, params, callBack) {8FNHTML5中文学习网 - HTML5先行者学习网
this.AJaxCommon("post", url, params, callBack);8FNHTML5中文学习网 - HTML5先行者学习网
},8FNHTML5中文学习网 - HTML5先行者学习网
AJaxCommon: function (method, url, params, callBack) {8FNHTML5中文学习网 - HTML5先行者学习网
//1.08FNHTML5中文学习网 - HTML5先行者学习网
var xhr = this.CreatXHR();8FNHTML5中文学习网 - HTML5先行者学习网
//2.08FNHTML5中文学习网 - HTML5先行者学习网
xhr.open(method, url, true);8FNHTML5中文学习网 - HTML5先行者学习网
//3.08FNHTML5中文学习网 - HTML5先行者学习网
if (method == "get") {8FNHTML5中文学习网 - HTML5先行者学习网
xhr.setRequestHeader("If-Modified-Since", "0");8FNHTML5中文学习网 - HTML5先行者学习网
} else {8FNHTML5中文学习网 - HTML5先行者学习网
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");8FNHTML5中文学习网 - HTML5先行者学习网
}8FNHTML5中文学习网 - HTML5先行者学习网
//4.08FNHTML5中文学习网 - HTML5先行者学习网
xhr.onreadystatechange = function () {8FNHTML5中文学习网 - HTML5先行者学习网
if (xhr.readyState == 4 && xhr.status == 200) {8FNHTML5中文学习网 - HTML5先行者学习网
var datas = JSON.parse(xhr.responseText);8FNHTML5中文学习网 - HTML5先行者学习网
//执行回调函数8FNHTML5中文学习网 - HTML5先行者学习网
callBack(datas);8FNHTML5中文学习网 - HTML5先行者学习网
}8FNHTML5中文学习网 - HTML5先行者学习网
}8FNHTML5中文学习网 - HTML5先行者学习网
//5.08FNHTML5中文学习网 - HTML5先行者学习网
xhr.send(params);8FNHTML5中文学习网 - HTML5先行者学习网
}8FNHTML5中文学习网 - HTML5先行者学习网
};8FNHTML5中文学习网 - HTML5先行者学习网
8FNHTML5中文学习网 - HTML5先行者学习网ps:在JQuery里面是有$.ajax 和$.get / $.Post 等异步请求的方法的。以前的封装就不用了。额。好扯。其实他们底层也是这样的写的呢。JQuery就是为了解决各个浏览器的兼容性问题而已8FNHTML5中文学习网 - HTML5先行者学习网
以上就是本人对于jQuery异步对象(XMLHttpRequest)的理解,如有遗漏,麻烦联系我,补充上。8FNHTML5中文学习网 - HTML5先行者学习网