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

作者: 坎肩儿 分类: ecshop网店 发布时间: 2011-07-23 10:51

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

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

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

页面:goods.dwt

效果:放大镜

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

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

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

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

解决步骤:

  1. 下载transportGoods.js到js目录下
  2. goods.dwt页面,适当的位置调用一下就好:
    {insert_scripts files=’transportGoods.js’}

至此,放大镜效果完美解决了。

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

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

出错地方的代码:Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + goods.toJSONString(), addToCartResponse, ‘POST’, ‘JSON’);

思路分析:goods.dwt页面调用的是修改后的transportGoods.js文件,导致toJSONString函数找不到。

解决步骤:

1、对比transport.jstransportGoods.js 的352行

legalParams = “JSON=” + params.toJSONString(); //transport.js
legalParams = “JSON=” + objToJSONString(params); //transportGoods.js

2、common.js文件的34行:

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

3、分析1、2中的红色代码区,修改common.js的34行为:

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

4、至此,证明方法可行,但是其他地方的Ajax.call就会出错,在线购买调用的是common.js里面的addToCart()函数,复制一份,重命名为:addToCartGoods(),修改里面的Ajax.call为步骤3中提到的。

5、修改goods.dwt页面,调用addToCart()的地方为addToCartGoods()

OK!

transportGoods.js文件:[点击下载]

成功解决!

10条评论
  • www.tahaoma.net

    3月 19, 2012 1:54 下午

    哪里捣鼓的有问题吧朋友?我当初就是按照这个步骤操作的,还算顺利

  • yadgen

    3月 15, 2012 10:09 上午

    还是不行,ECSHOP版本2.72

    网页错误详细信息

    用户代理: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.2; Tablet PC 2.0)
    时间戳: Thu, 15 Mar 2012 02:08:10 UTC

    消息: “JSON”未定义
    行: 792
    字符: 2
    代码: 0
    URI: http://local.boha.com/js/transportGoods.js

  • 匿名

    3月 15, 2012 10:08 上午

    不行啊,ECSHOP版本2.72

    网页错误详细信息

    用户代理: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.2; Tablet PC 2.0)
    时间戳: Thu, 15 Mar 2012 02:08:10 UTC

    消息: “JSON”未定义
    行: 792
    字符: 2
    代码: 0
    URI: http://local.boha.com/js/transportGoods.js

    消息: “JSON”未定义
    行: 792
    字符: 2
    代码: 0
    URI: http://local.boha.com/js/transportGoods.js

  • zendwang

    12月 1, 2011 11:37 上午

    不错的

  • mo meak

    11月 23, 2011 4:30 下午

    网页错误详细信息

    用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
    时间戳: Wed, 23 Nov 2011 08:30:37 UTC

    消息: 例外被抛出且未被接住
    行: 409
    字符: 9
    代码: 0
    URI: http://127.0.0.1/js/transportGoods.js

  • mo meak

    11月 23, 2011 4:29 下午

    还真是不行

  • 千里马

    11月 8, 2011 11:26 下午

    购物车的地方,记得当时也遇到过,印象当中是又复制了某个文件,也是因为冲突造成的。最近正在开发个商城,到时详细的写一份。

  • 枫子

    11月 8, 2011 12:56 下午

    好像有点不行 我是最新的2.7.2版本
    修改好后 jquery可以用了 但是添加到购物车不能用 提示 ‘Ajax’ 未定义
    求解
    谢谢

  • 千里马

    10月 20, 2011 8:45 上午

    方法可用,可能与你的版本有关系,或者有些地方有问题导致出错。可以把错误提示贴过来。

  • ksn

    10月 17, 2011 2:42 下午

    好像不能用。不知道为什么