【问题标题】:Json JQuery conflictJson JQuery 冲突
【发布时间】:2009-02-13 16:07:07
【问题描述】:

我们的企业应用程序当前使用 Json.js 我下载了 JQuery js 文件,将其包含在使用 json 的页面中,并且我开始在 json.js 文件中收到 Javascript 错误。错误是:

Microsoft JScript runtime error: Object doesnt suppor this propety or method

这是一个已知问题吗?

编辑: 我不确定这个 json.js 文件是从哪里下载的(一位同事已经这样做了)。但是,json.js 看起来像这样:

    json.js
2007-04-13

Public Domain

This file adds these methods to JavaScript:

    array.toJSONString()
    boolean.toJSONString()
    date.toJSONString()
    number.toJSONString()
    object.toJSONString()
    string.toJSONString()

我用 json2.js 替换了这个文件,新文件似乎没有 parseJSON() 函数。我们在几个页面中使用了这个功能。

【问题讨论】:

    标签: jquery json


    【解决方案1】:

    看起来 Json.js 确实使用 $ 作为变量名。在这些情况下,您需要使用JQuery's noconflict function。基本上,您必须将 JQuery 脚本标记放在 Json 脚本标记之上,并在 Json 库加载之前在 jquery 上调用 noconflict 。一个不错的功能是,虽然 noconflict 使 JQuery 不使用 $,但您可以将 noconflict 的结果(将是 JQuery 对象)分配给另一个别名,就像这样

    var $j = jQuery.noConflict();
    

    现在你只需在任何你会使用 $ 的地方使用 $j。

    【讨论】:

      【解决方案2】:

      您可能想要指定json.js 是什么。这是http://www.json.org/js.html吗?

      您可能使用的是与 jQuery 冲突的旧版本

      这可能会有所帮助:http://www.mail-archive.com/discuss@jquery.com/msg06247.html

      【讨论】:

        【解决方案3】:

        要解决任何变量/方法命名问题,请使用这种在 100% 的时间内都对我有用的方法:

        (function(){
          // Your javascript function goes here
        })();
        

        【讨论】:

          【解决方案4】:

          用json2.js替换json.js后,只需要替换结构类似

          foo.toJSONString()
          foo.parseJSON()
          

          JSON.stringify(foo)
          JSON.parse(foo)
          

          【讨论】:

            【解决方案5】:

            我使用http://json.org的json2.js文件和jQuery_1.3.1.js文件结合没有问题。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-08-04
              • 1970-01-01
              • 2011-01-14
              • 2011-04-02
              • 2017-01-28
              • 2011-10-28
              相关资源
              最近更新 更多