关于ajax网络请求的封装实例
实例代码:
//封装的ajax网络请求函数 //obj是一个对象 functionAJAX(obj){ //跨域请求 if(obj.dataType=="jsonp"){ //在这里callback必须是全局变量保证函数消失的时候这个变量不可以被销毁 //处理一下函数名(防止多个网络请求函数名字相同出现紊乱的情况) varhehe="callBack"+"_"+newDate().getTime()+"_"+String(Math.random()).replace(".",""); window[hehe]=obj.success; //创建script标签 varsc=document.createElement("script"); sc.src=obj.url+"?"+"cb="+hehe; console.log(sc.src); document.body.appendChild(sc); document.body.removeChild(sc); return; } //1、创建ajax对象 varajaxObj=null; if(window.XMLHttpRequest){ ajaxObj=newXMLHttpRequest(); }else{ ajaxObj=newActiveXObject("Microsoft.XMLHTTP"); } //设置请求的类型 obj.type=obj.type.toUpperCase()||"GET"; //如果是get请求并且需要传递参数则需要给url后面拼接参数 if(obj.type=="GET"){ vararr=[];//定义数组用于把对象存储到数据里面 for(varkeyinobj.data){ arr.push(key+"="+obj.data[key]); } //用&分隔数组让其转化为类似:name=lxl&age=18的形式 varstr=arr.join("&"); obj.url=obj.url+"?"+str; //拨号 ajaxObj.open(obj.type,obj.url,true); //发送"name=123&age=18" ajaxObj.send(); }else{ vararr=[];//定义数组用于把对象存储到数据里面 for(varkeyinobj.data){ arr.push(key+"="+obj.data[key]); //console.log(arr); } //用&分隔数组让其转化为类似:name=lxl&age=18的形式 varstr=arr.join("&"); //console.log(str); ajaxObj.open(obj.type,obj.url,true); ajaxObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); ajaxObj.send(str); } //监听 ajaxObj.onreadystatechange=function(){ if(ajaxObj.readyState==4){ if(ajaxObj.status>=200&&ajaxObj.status<300||ajaxObj.status==304){ //请求成功 obj.success(ajaxObj.responseText); }else{ //请求失败 obj.error(ajaxObj.status); } } } }
以上这篇关于ajax网络请求的封装实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。