浅谈jQuery异步对象(XMLHttpRequest)
我们先来看看异步对象五部曲
这是post请求的、
代码如下:
//1.00创建异步对象 var xhr = new XMLHttpRequest(); //2.0 xhr.open("post", url,params, true); //3.0将参数使用Formdata属性传递 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //4.0设置回调函数 xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { alert(xhr.responseText); } } //5.0传递参数 xhr.send(params);
结合get请求做一个异步对象的封装
get 请求中的
xhr.setRequestHeader("If-Modified-Since", "0"); 是为了清除缓存
而post请求的
代码如下:
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
是为了传输方式
在<from method='post' type="">
<from>中的type可以得到三种方式,其中包括application/x-www-form-urlencoded
代码如下:
var ajaxHelp = { CreatXHR: function () { //创建异步对象 var xhr = new XMLHttpRequest(); return xhr; }, //ajax的get请求 AjaxGet: function (url, callBack) { this.AJaxCommon("get", url, null, callBack); }, //ajax的post请求 AjaxPost: function (url, params, callBack) { this.AJaxCommon("post", url, params, callBack); }, AJaxCommon: function (method, url, params, callBack) { //1.0 var xhr = this.CreatXHR(); //2.0 xhr.open(method, url, true); //3.0 if (method == "get") { xhr.setRequestHeader("If-Modified-Since", "0"); } else { xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); } //4.0 xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { var datas = JSON.parse(xhr.responseText); //执行回调函数 callBack(datas); } } //5.0 xhr.send(params); } };
ps:在JQuery里面是有$.ajax 和$.get / $.Post 等异步请求的方法的。以前的封装就不用了。额。好扯。其实他们底层也是这样的写的呢。JQuery就是为了解决各个浏览器的兼容性问题而已
以上就是本人对于jQuery异步对象(XMLHttpRequest)的理解,如有遗漏,麻烦联系我,补充上。
相关推荐
jiaguoquan00 2020-07-07
zhaolisha 2020-06-12
坚持着执着 2020-06-05
knightwatch 2020-04-25
zhaolisha 2020-01-11
zhaolisha 2019-12-29
wanghongsha 2019-12-06
小小大人物 2014-01-19
loopstang 2014-01-11
roodyszz0 2019-11-17
81493369 2019-11-04
Liuzhiqianblog 2019-11-03
用不完的好奇心 2019-10-26
89241846 2019-09-12
青菜萝卜白菜 2019-07-03
荒唌Blog 2017-12-18
无材可去补苍天 2019-06-12
HAcSeeking 2018-11-05