ecshop2.7.3 transposrt.js和 jquery 等js框架冲突最简单最新的解决办法
适用于 ecshop v2.7.3
由于ecshop中的 transport.js中重写的json解析 导致各种js框架不兼容和处理前台和后台html文档时不便、
parseResult()error:can'tparsetoJSON等错误
,由此考虑替换掉 json解析。(不影响原有功能)
方法
1 引入 jquery.js ,jquery.json.js
2 修改 transport.js为以下内容
/***@filetransport.js*@description用于支持AJAX的传输类。*@authorECShopR&DTeam(http://www.ecshop.com/)*@date2007-03-08Wednesday*@licenseLicensedundertheAcademicFreeLicense2.1http://www.opensource.org/licenses/afl-2.1.php*@version1.0.20070308**/varTransport={/***存储本对象所在的文件名。**@static*/filename:"transport.js",/***存储是否进入调试模式的开关,打印调试消息的方式,换行符,调试用的容器的ID。**@private*/debugging:{isDebugging:0,debuggingMode:0,linefeed:"",containerId:0},/***设置调试模式以及打印调试消息方式的方法。**@public*@param{int}是否打开调试模式0:关闭,1:打开*@param{int}打印调试消息的方式0:alert,1:innerHTML**/debug:function(isDebugging,debuggingMode){this.debugging={"isDebugging":isDebugging,"debuggingMode":debuggingMode,"linefeed":debuggingMode?"<br/>":"\n","containerId":"dubugging-container"+newDate().getTime()};},/***传输完毕后自动调用的方法,优先级比用户从run()方法中传入的回调函数高。**@public*/onComplete:function(){},/***传输过程中自动调用的方法。**@public*/onRunning:function(){},/***调用此方法发送HTTP请求。**@public*@param{string}url请求的URL地址*@param{mix}params发送参数*@param{Function}callback回调函数*@param{string}ransferMode请求的方式,有"GET"和"POST"两种*@param{string}responseType响应类型,有"JSON"、"XML"和"TEXT"三种*@param{boolean}asyn是否异步请求的方式*@param{boolean}quiet是否安静模式请求*/run:function(url,params,callback,transferMode,responseType,asyn,quiet){/*处理用户在调用该方法时输入的参数*/params=this.parseParams(params);transferMode=typeof(transferMode)==="string"&&transferMode.toUpperCase()==="GET"?"GET":"POST";if(transferMode==="GET"){vard=newDate();url+=params?(url.indexOf("?")===-1?"?":"&")+params:"";url=encodeURI(url)+(url.indexOf("?")===-1?"?":"&")+d.getTime()+d.getMilliseconds();params=null;}responseType=typeof(responseType)==="string"&&((responseType=responseType.toUpperCase())==="JSON"||responseType==="XML")?responseType:"TEXT";asyn=asyn===false?false:true;/*处理HTTP请求和响应*/varxhr=this.createXMLHttpRequest();try{varself=this;if(typeof(self.onRunning)==="function"&&!quiet){self.onRunning();}xhr.open(transferMode,url,asyn);if(transferMode==="POST"){xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");}if(asyn){xhr.onreadystatechange=function(){if(xhr.readyState==4){switch(xhr.status){case0:case200://OK!/**Iftherequestwastocreateanewresource*(suchaspostanitemtothedatabase)*Youcouldinsteadreturnastatuscodeof'201Created'*/if(typeof(self.onComplete)==="function"){self.onComplete();}if(typeof(callback)==="function"){callback.call(self,self.parseResult(responseType,xhr),xhr.responseText);}break;case304://NotModified/**ThiswouldbeusedwhenyourAjaxwidgetis*checkingforupdatedcontent,*suchastheTwitterinterface.*/break;case400://BadRequest/**AbitlikeasafetynetforrequestsbyyourJSinterface*thataren'tsupportedontheserver.*"Yourbrowsermadearequestthattheservercannotunderstand"*/alert("XmlHttpRequeststatus:[400]BadRequest");break;case404://NotFoundalert("XmlHttpRequeststatus:[404]\nTherequestedURL"+url+"wasnotfoundonthisserver.");break;case409://Conflict/**PerhapsyourJavaScriptrequestattemptedto*updateaDatabaserecord*butfailedduetoaconflict*(eg:afieldthatmustbeunique)*/break;case503://ServiceUnavailable/**Aresourcethatthisrequestreliesupon*iscurrentlyunavailable*(eg:afileislockedbyanotherprocess)*/alert("XmlHttpRequeststatus:[503]ServiceUnavailable");break;default:alert("XmlHttpRequeststatus:["+xhr.status+"]Unknowstatus.");}xhr=null;}}if(xhr!=null)xhr.send(params);}else{if(typeof(self.onRunning)==="function"){self.onRunning();}xhr.send(params);varresult=self.parseResult(responseType,xhr);//xhr=null;if(typeof(self.onComplete)==="function"){self.onComplete();}if(typeof(callback)==="function"){callback.call(self,result,xhr.responseText);}returnresult;}}catch(ex){if(typeof(self.onComplete)==="function"){self.onComplete();}alert(this.filename+"/run()error:"+ex.description);}},/***如果开启了调试模式,该方法会打印出相应的信息。**@private*@param{string}info调试信息*@param{string}type信息类型*/displayDebuggingInfo:function(info,type){if(!this.debugging.debuggingMode){alert(info);}else{varid=this.debugging.containerId;if(!document.getElementById(id)){div=document.createElement("DIV");div.id=id;div.style.position="absolute";div.style.width="98%";div.style.border="1pxsolid#f00";div.style.backgroundColor="#eef";varpageYOffset=document.body.scrollTop||window.pageYOffset||0;div.style.top=document.body.clientHeight*0.6+pageYOffset+"px";document.body.appendChild(div);div.innerHTML="<div></div>"+"<hrstyle='height:1px;border:1pxdashedred;'>"+"<div></div>";}varsubDivs=div.getElementsByTagName("DIV");if(type==="param"){subDivs[0].innerHTML=info;}else{subDivs[1].innerHTML=info;}}},/***创建XMLHttpRequest对象的方法。**@private*@return返回一个XMLHttpRequest对象*@typeObject*/createXMLHttpRequest:function(){varxhr=null;if(window.ActiveXObject){varversions=['Microsoft.XMLHTTP','MSXML6.XMLHTTP','MSXML5.XMLHTTP','MSXML4.XMLHTTP','MSXML3.XMLHTTP','MSXML2.XMLHTTP','MSXML.XMLHTTP'];for(vari=0;i<versions.length;i++){try{xhr=newActiveXObject(versions[i]);break;}catch(ex){continue;}}}else{xhr=newXMLHttpRequest();}returnxhr;},/***当传输过程发生错误时将调用此方法。**@private*@param{Object}xhrXMLHttpRequest对象*@param{String}urlHTTP请求的地址*/onXMLHttpRequestError:function(xhr,url){throw"URL:"+url+"\n"+"readyState:"+xhr.readyState+"\n"+"state:"+xhr.status+"\n"+"headers:"+xhr.getAllResponseHeaders();},/***对将要发送的参数进行格式化。**@private*@params{mix}params将要发送的参数*@return返回合法的参数*@typestring*/parseParams:function(params){varlegalParams="";params=params?params:"";if(typeof(params)==="string"){legalParams=params;}elseif(typeof(params)==="object"){try{legalParams="JSON="+JQ.toJSON(params);}catch(ex){alert("Can'tstringifyJSON!");returnfalse;}}else{alert("Invalidparameters!");returnfalse;}if(this.debugging.isDebugging){varlf=this.debugging.linefeed,info="[OriginalParameters]"+lf+params+lf+lf+"[ParsedParameters]"+lf+legalParams;this.displayDebuggingInfo(info,"param");}returnlegalParams;},/***对返回的HTTP响应结果进行过滤。**@public*@params{mix}resultHTTP响应结果*@return返回过滤后的结果*@typestring*/preFilter:function(result){returnresult.replace(/\xEF\xBB\xBF/g,"");},/***对返回的结果进行格式化。**@private*@return返回特定格式的数据结果*@typemix*/parseResult:function(responseType,xhr){varresult=null;switch(responseType){case"JSON":result=this.preFilter(xhr.responseText);try{result=JQ.evalJSON(result);}catch(ex){throwthis.filename+"/parseResult()error:can'tparsetoJSON.\n\n"+xhr.responseText;}break;case"XML":result=xhr.responseXML;break;case"TEXT":result=this.preFilter(xhr.responseText);break;default:throwthis.filename+"/parseResult()error:unknownresponsetype:"+responseType;}if(this.debugging.isDebugging){varlf=this.debugging.linefeed,info="[ResponseResultof"+responseType+"Format]"+lf+result;if(responseType==="JSON"){info="[ResponseResultofTEXTFormat]"+lf+xhr.responseText+lf+lf+info;}this.displayDebuggingInfo(info,"result");}returnresult;}};/*定义两个别名*/varAjax=Transport;Ajax.call=Transport.run;Ajax.onRunning=showLoader;Ajax.onComplete=hideLoader;/***显示载入信息*/functionshowLoader(){document.getElementsByTagName('body').item(0).style.cursor="wait";if(top.frames['header-frame']&&top.frames['header-frame'].document.getElementById("load-div")){top.frames['header-frame'].document.getElementById("load-div").style.display="block";}else{varobj=document.getElementById('loader');if(!obj&&typeof(process_request)!='undefined'){obj=document.createElement("DIV");obj.id="loader";obj.innerHTML=process_request;document.body.appendChild(obj);}}}/***隐藏载入信息*/functionhideLoader(){document.getElementsByTagName('body').item(0).style.cursor="auto";if(top.frames['header-frame']&&top.frames['header-frame'].document.getElementById("load-div")){setTimeout(function(){top.frames['header-frame'].document.getElementById("load-div").style.display="none"},10);}else{try{varobj=document.getElementById("loader");obj.style.display='none';document.body.removeChild(obj);}catch(ex){}}}
3定义全局变量
var JQ=$.noConflict();
4尽情使用框架吧
(已经测试 v2.7.3)
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。