解决ECShop transport.js与jQuery冲突(转载并做了升级)【分享】

web前端 杭州-小白 【转载】

这是网上找到的方案,本人亲测过,可以用。不过要注意,js目录下的gobal.js应该删除,否则依然会冲突,附件是我自己修改过的transport.js和json2.js的源文件。本教程适合对EC比较熟悉,想引入jq库的朋友

=====1、加入JSON2.js文件
原因很简单,transport修改Object是为了加入支持JSON的方法。所以我这里用JSON官网在javascript语言上提供的 json2.js支持具体下载地址 https://github.com/douglascrockford/JSON-js

2、修改transport.js

2.1 注释掉重写object的方法,具体搜索
Js代码

if ( ! Object.prototype.toJSONString) {
这一段代码,然后把里面的内容全部注释掉。(参考:注释掉496-737行)

2.2 加入新的JSON支持方法
Js代码

  • function objToJSONString(obj, filter){
  •     return JSON.stringify(obj, filter);
  • }
  • function parseObjectToJSON(object, filter){
  •     return JSON.parse(object, filter);
  • }

function objToJSONString(obj, filter){ return JSON.stringify(obj,
filter);}function parseObjectToJSON(object, filter){    return
JSON.parse(object, filter);}

也可以看到其实都很简单,都是调用json2.js里面提供的方法,有人觉得不必在这里添加直接调用也可以,但我还是建议做这样的一个适配器在这,因为容易容易表明用意。

2.3 修正AJAX方法

2.3.1 在transport.js搜索params.toJSONString() 改为 objToJSONString(params)

2 business collaboration software.3.2 继续在transport.js搜索result.parseJSON() 改为 parseObjectToJSON(result)(具体在408行左右)

3、修复旧JSON调用地方

简单来说就是把所有*.toJSONString() 的调用改为用objToJSONString(*),而*.parseJSON()改为parseObjectToJSON(*)。
例如: common.js里面第一个函数里面的
Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + goods.toJSONString(), addToCartResponse, ‘POST’, ‘JSON’);
要改为Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + objToJSONString(goods), addToCartResponse, ‘POST’, ‘JSON’);
comm.js里面还有一些Ajax.call调用tojsonstring的,都需要按照本例替换。

但非不得已不建议把一切旧的调用都修复,应该选择性的修复,应当出现冲突的地方我们才必须去修复。

就是说哪里调用了jQuery,就把修正后的transport.js及json2.js导入,并且修复toJSONString和 parseJSON方法,其他页面几不必了。

所以说,也不建议在header里面就加入了jQuery,因为这样每个页面都会出现冲突了,修复工资也比较麻烦了,能避免尽量避免了。

最好的解决方案就坐等ECShop来搞定了。

PS:附件为修复后的transport.js文件,注意调用之前必须加入json2.js文件。

以上内容来源于网络转载,来源于http://bbs.mywebphp.com/thread-360-1-1.html。特此分享

附件 js.rar

本文固定链接: http://www.xiaobai8.com/Blog/428.html | web前端,杭州小白的个人博客,小白的个人博客

该日志由 杭州-小白 于2012年03月30日发表在 other, 分享 分类下,
原创文章转载请注明: 解决ECShop transport.js与jQuery冲突(转载并做了升级)【分享】 | web前端,杭州小白的个人博客,小白的个人博客
关键字: , ,

解决ECShop transport.js与jQuery冲突(转载并做了升级)【分享】:目前有3 条留言

  1. 板凳
    love小白:

    😛 这个挺不错的。如果用到ecshop系统的可以看看

    2012-03-31 17:55
  2. 沙发
    liba:

    😥 😥 😥 😥 我试了 ,还是不行!!!

    2012-10-19 14:48
    • 杭州-小白:

      嗯?不知道你怎么试的哦,这个方法可以是可以,不过貌似是有问题的,还是老办法。最后页面底部在引入一个JQuery得了

      2012-10-25 17:58