最近在学习ajax的时候发现不断的调用get和post请求时,代码重复很多,有的公司会用自带的封装的方法,这个可以直接调用ajax的方法,但是在运用的时候我们也应该学习它是怎么封装的和一些原理性的东西,Ajax技术在很多网站的开发都会用到,异步刷新大大提高了网站的性能。ajax的请求我们归结了五部曲,下面是我自己通过查找资料和学习总结的ajax的get和post请求的封装类。
代码:
1 var ajaxHelper = { 2 //1.得到异步对象 3 GetXhr: function () { 4 var xhr; 5 if (window.XMLHttpRequest) { 6 //兼容新式浏览器 7 xhr = new XMLHttpRequest(); 8 } else { //兼容IE老式浏览器 9 xhr = new ActiveXObject("Microsoft.XMLHTTP"); 10 } 11 //返回异步对象 12 return xhr; 13 }, 14 //2.定义get请求 15 ajaxGet: function (url, callback) { 16 this.ajaxComm("get", url, null, callback); 17 }, 18 //3.定义post请求 19 ajaxPost: function (url,params,callback) { 20 this.ajaxComm("post",url,params,callback); 21 }, 22 //4.公共请求方法 23 //method:get,post 24 //url:需要发送的请求地址 25 //parms:发送给服务器的数据,post的时候才有值,get为null 26 //callbakc:请求成功以后的回调函数 27 ajaxComm: function (method, url, params, callbakc) { 28 //1.0创建异步对象 29 var xhr = this.GetXhr(); 30 //2.0设置请求的参数 31 xhr.open(method, url, params, callbakc); 32 //3.0防止缓存 33 if (method == "get") { 34 xhr.setRequestHeader("If-Modified-Since", "0"); 35 } else { 36 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 37 } 38 //4.0设置回调函数 39 xhr.onreadystatechange = function () { 40 if(xhr.readyState==4&&xhr.status==200){ 41 var objdata = xhr.responseText; 42 var data = JSON.parse(objdata); 43 //执行业务逻辑 44 callbakc(data); 45 } 46 } 47 //5.0发送请求 48 xhr.send(params); 49 50 } 51 }