ecshop的jquery,jqzoom,transport.js冲突 问题解决(麻烦版)

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家

ecshop里面jquery与transport.js文件冲突是众所周知的,这里提供的方案,不是最完美的,是在网上提出的解决方案的基础上整理的。

是这样的,保留原来的transport.js,发生冲突的页面调用修改过的transportGoods.js,这样就避免了修改所有js文件的麻烦;函数方面,保留原来的函数,调用出错的函数,重新复制一个,起个新的函数名。

不喜欢这种方式的,下面的可以忽略了,没有什么技术含量,总结了一下。

页面:goods.dwt

效果:放大镜

所用插件:jquery图片放大镜效果插件 jqzoom

症状一:jquery与transport.js文件冲突

思路分析:两者都定义了$,导致发生冲突

实施方案:详细的分析网上有很多,这里只上传已配置好的transport.js文件(文件名重命名为:transportGoods.js),感兴趣的百度下详细的配置。

解决步骤:

下载transportGoods.js到js目录下
在goods.dwt页面,适当的位置调用一下就好:
{insert_scripts files=’transportGoods.js’}
至此,放大镜效果完美解决了。

症状二:在线购买失效,报错:

错误: goods.toJS**tring is not a function
源文件:http://127.0.0.1/js/common.js
行:34

出错地方的代码:Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + goods.toJS**tring(), addToCartResp**e, ‘POST’, ‘JSON’);
思路分析:goods.dwt页面调用的是修改后的transportGoods.js文件,导致toJS**tring函数找不到。

解决步骤:

1、对比transport.js与transportGoods.js 的352行

legalParams = “JSON=” + params.toJS**tring(); //transport.js
legalParams = “JSON=” + objToJS**tring(params); //transportGoods.js
2、common.js文件的34行:

Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + goods.toJS**tring(), addToCartResp**e, ‘POST’, ‘JSON’);
3、分析1、2中的红色代码区,修改common.js的34行为:

Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + objToJS**tring(goods), addToCartResp**e, ‘POST’, ‘JSON’);
4、至此,证明方法可行,但是其他地方的Ajax.call就会出错,在线购买调用的是common.js里面的addToCart()函数,复制一份,重命名为:addToCartGoods(),修改里面的Ajax.call为步骤3中提到的。

5、修改goods.dwt页面,调用addToCart()的地方为addToCartGoods()
下载路径http://www.pksafe.cn/wp-content/ ... p-transportGoods.js

回答:
自己顶一下

继续顶

帮顶一下 技术分享

多谢楼主分享了

我感觉这个方法是最简单,只需要把调用transport.js的地方换成ecshop-transportGoods.js 这个就可以了。我暂时没发现问题,如果有问题,大家可以告诉我



有问题 大家可以进下面的ec二次开发群 里面有人可以帮助解决问题

看看能用不

好帖子 喜欢的话 收藏下,回复下

现在的人啊,只知道找帖子,不回复,能不能留下足迹啊

可以解决问题的 我的平台再用

没人关注这样的问题?

学习过,收藏了,以后备用,呵呵...看过留字!

感谢分享!有时解决这样的问题确实很头疼.