使用原生js封装的ajax实例(兼容jsonp)
实例如下:
/*封装ajax函数 *@param{string}opt.typehttp连接的方式,包括POST和GET两种方式 *@param{string}opt.url发送请求的url *@param{boolean}opt.async是否为异步请求,true为异步的,false为同步的 *@param{object}opt.data发送的参数,格式为对象类型 *@param{function}opt.successajax发送并接收成功调用的回调函数 */ functionajax(opt){ opt=opt||{}; opt.method=opt.method.toUpperCase()||'POST'; opt.url=opt.url||''; opt.async=opt.async||true; opt.data=opt.data||null; opt.success=opt.success||function(){}; opt.dataType=opt.dataType||"json"; varxmlHttp=null; if(XMLHttpRequest){ xmlHttp=newXMLHttpRequest(); } else{ xmlHttp=newActiveXObject('Microsoft.XMLHTTP'); }varparams=[]; for(varkeyinopt.data){ params.push(key+'='+opt.data[key]); } varpostData=params.join('&'); if(opt.method.toUpperCase()==='POST'){ xmlHttp.open(opt.method,opt.url,opt.async); xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8'); xmlHttp.send(postData); } elseif(opt.method.toUpperCase()==='GET'){ xmlHttp.open(opt.method,opt.url+'?'+postData,opt.async); xmlHttp.send(null); } xmlHttp.onreadystatechange=function(){ if(opt.dataType!='jsonp'){ if(xmlHttp.readyState==4&&xmlHttp.status==200){ opt.success(xmlHttp.responseText); } }else{ //alert(1); if(xmlHttp.readyState==4&&xmlHttp.status==200){ varoScript=document.createElement('script'); document.body.appendChild(oScript); varcallbackname='wangxiao' oScript.src=opt.url+"?"+postData+'&callback='+callbackname; window['wangxiao']=function(data){ opt.success(data); document.body.removeChild(oScript); }; } } }; } exportdefaultajax;
以上这篇使用原生js封装的ajax实例(兼容jsonp)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。