日期:2014-05-16  浏览次数:20299 次

ECShop transport.js与jquery 冲突解决方案

ECShop把AJAX事件和JSON解析的模块放在common/transport.js之中,可以说它也有自己封装的一套工具,这其实是很正常的。

但恰恰的,在封装JSON各种方法的同时对object的模型进行了重写,这个就跟jQuery冲突了。因为众所周知的,jQuery对各种JavaScript对象进行了扩展。

这一切其实都很容易理解,各有各的理由十分自然,但头痛和无奈的就变得在我们这些使用者身上了。在ECShop论坛上原来也有很多朋友提出了这个问题,也提出了各种各样的方法,我尝试了一些,不好或者甚至无用,所以只好自己动手了。

解决思路大概就是屏蔽ECshop扩展的toJSONString方法,用别的函数代替。

为了照顾下小菜们,就写详细点吧。

1,首先复制一份 transport.js 改名为 transport.org.js 提供给后台使用

2,屏蔽掉transport.js里的toJSON功能 行数大概有497-737行之间
修改352行为:

1. legalParams = “JSON=” + $.toJSON(params);

复制代码

修改408行为:

1. result = $.evalJSON(result);

复制代码

3,修改index.js文件44行改为:

1. var res = $.evalJSON(result);

复制代码

4,修改common.js文件
第34行改为:

1. Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + $.toJSON(goods), addToCartResponse, ‘POST’, ‘JSON’);

复制代码