原生 ajax 封装

2/10/2017来源:心得技巧人气:3262

//http://192.168.*.**:8080/hohjkhklhkhkhjkl/ActivityLogInterface/setlog_activity?activityId=XXXX&userId=XXX&PRePage=xxx&nextPage=xxx&userip=xxxx&from_pid=xxxx var logAjaxActionUrl = "http://**********:8080/xjcartoon_activity_BtopInterface/"; //ajax 请求 //同步,异步请求    /** *url :请求接口地址 *xhr:对象 *Async:是否是异步请求(true:异步;false:同步) *method:请求方式(POST或GET) *params:请求传送的参数 *Content-Type:请求头格式要求 *data:请求获取到的信息 * * ***调用方法:ajax.init({ url:"http://r.qzone.QQ.com/cgi-bin/user/cgi_personal_card", method:"get", params:{"format":"json","ip":"192.168.1.255"}, async:true, ContentType:"application/x-www-form-urlencoded", success:function(data){ aa.innerHTML=data; }, fail:function(status){ } }); */   function AjaxFun(option){ this.option=null; this.url=null;//请求地址 this.Async=null;//是否异步请求; this.method=null;//请求方式 this.formatParams=function(data){//对传参进行编码     var arr=[]; for(var name in data){ arr.push(encodeURIComponent(name)+"="+encodeURIComponent(data[name])); } // arr.push(("v="+Math.random()).replace(".","")); return arr.join("&"); } this.params=null; this.contentType=null; this.data=null;//请求获取到的信息     this.init=function(option){//初始化 this.option=option||{}; this.url=this.option.url;//请求地址 this.Async=this.option.async||true;//是否异步请求; this.method=this.option.method.toUpperCase();//请求方式 this.params=this.formatParams(this.option.params); this.contentType=this.option.ContentType||""; this.data=null;//请求获取到的信息 //创建对象 //console.log(this.formatParams)    var xhr; if (window.xmlHttpRequest)  {// code for IE7+, Firefox, Chrome, Opera, Safari xhr=new xmlhttpRequest();  } else  {// code for IE6, IE5     xhr=new ActiveXObject("Microsoft.XMLHTTP");  } //接收请求 xhr.onreadystatechange=function(){ if(xhr.readyState == 4 ){ if(xhr.status == 200){  option.success && option.success(eval("("+xhr.responseText+")"));                 } else {                     option.fail && option.fail(status); //window.location.href="404.html";                 } } }  //判断请求方式 if(this.method=="POST"){ xhr.open(this.method,this.url,this.Async); //设置提交时的内容类型 if(this.contentType==""){ xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); }else{  xhr.setRequestHeader("Content-type",this.contentType); } xhr.send(this.params); }else if(this.method=="GET"){ xhr.open(this.method,this.url+"?"+this.params,this.Async); xhr.send(null); } }; } var ajax=new AjaxFun(); function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+  value + ";expires=" + exp.toGMTString(); } function getCookie(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) return unescape(arr[2]); else return null; } /**  *   * @param {Object} userId  用户信息  * @param {Object} from_pid 来源  * @param {Object} next_id 请求详情Id  */   function setLogInfo(userId,activityId,from_pid,next_id){   var params = new Object(); //暂时设定一个定值的userid和user_ip params.userId = userId;    //params.user_ip = "8851003273568946";    params.from_pid = from_pid;    //上一个页面    params.prev_page = document.referrer || '';    //当前页面地址    params.next_page = document.URL || '';    params.next_id = next_id;    //拼接参数串    var args = '';     for(var i in params) {        if(args != '') {            args += '&';        }           args += i + '=' + encodeURIComponent(params[i]);    } var img=new Image(1,1); img.src = logAjaxActionUrl+'ActivityLogInterface/setlog_activity?loggerType=page&' + args;   } //activityId=XXXX&userId=XXX&prePage=xxx&nextPage=xxx&userIp=xxxx&from_pid=xxxx /*     function ajax(options) {         options = options || {};         options.type = (options.type || "GET").toUpperCase();         options.dataType = options.dataType || "json";         var params = formatParams(options.data);         //创建 - 非IE6 - 第一步         if (window.XMLHttpRequest) {             var xhr = new XMLHttpRequest();         } else { //IE6及其以下版本浏览器             var xhr = new ActiveXObject('Microsoft.XMLHTTP');         }         //接收 - 第三步         xhr.onreadystatechange = function () {             if (xhr.readyState == 4) {                 var status = xhr.status;                 if (status >= 200 && status < 300) {                     options.success && options.success(xhr.responseText, xhr.responseXML);                 } else {                     options.fail && options.fail(status);                 }             }         }         //连接 和 发送 - 第二步         if (options.type == "GET") {             xhr.open("GET", options.url + "?" + params, true);             xhr.send(null);         } else if (options.type == "POST") {             xhr.open("POST", options.url, true);             //设置表单提交时的内容类型             xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");             xhr.send(params);         }     }     //格式化参数     function formatParams(data) {         var arr = [];         for (var name in data) {             arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));         }         arr.push(("v=" + Math.random()).replace(".",""));         return arr.join("&");     } */