transport.js和jquery冲突问题的解决方法
问题原因:/js/transport.js文件
Object.prototype.toJSONString=function(){**************}
大概580行到590行之间这个句用于格式化json,他重写了object的结构,导致于js框架冲突,如果要解决需要把这段代码注释掉,然后用别的方式替换。
我是将所有用到*.toJSONString的地方,替换成一个函数,例如:
/js/common.js29行
Ajax.call(‘flow.php?step=add_to_cart',‘goods='+goods.toJSONString,addToCartResponse,‘POST',‘JSON');
替换成:
Ajax.call(‘flow.php?step=add_to_cart',‘goods='+obj2str(goods),addToCartResponse,‘POST',‘JSON');
obj2str函数如下:
functionobj2str(o){
varr=[];
if(typeofo==”string”)return“\”"+o.replace(/([\'\"\\])/g,”\\$1″).replace(/(\n)/g,”\\n”).replace(/(\r)/g,”\\r”).replace(/(\t)/g,”\\t”)+”\”";
if(typeofo==”undefined”)return“undefined”;
if(typeofo==“object”){
if(o===null)return“null”;
elseif(!o.sort){
for(variino)
r.push(“\”"+i+”\”"+”:”+obj2str(o[i]))
r=”{“+r.join()+”}”
}else{
for(vari=0;i<o.length;i++)
r.push(obj2str(o[i]))
r=”["+r.join()+"]”
}
returnr;
}
returno.toString();
}
大概这样就可以了,可能还有些脚步错误需要处理,您自己体会下,这只是个解决方法,并不一定适用您的网站。
我注释了下面这一段
/*
Object.prototype.toJSONString=function(){
……
//Joinallofthefragmentstogetherandreturn.
a.push(‘}');
returna.join(”);
};
*/