【问题标题】:JSON undefined in IE7IE7 中未定义的 JSON
【发布时间】:2013-06-26 22:09:25
【问题描述】:

我正在使用下面这行 JQuery 代码:

$.get('/ajax/buy', {'categoryname':chosenSelected}, function(data) {
   data = JSON.parse(data);
...

但是,在 IE7 上运行它时,我收到以下错误消息:JSON undefined:

如何使用兼容 IE7(和所有主流浏览器)的解析器?

【问题讨论】:

    标签: javascript jquery json internet-explorer-7


    【解决方案1】:

    您可以使用 jQuery 中提供的parseJSON

    【讨论】:

    • 我会评论说,虽然其他答案是正确的,因为您可以获得 getJSON 或其他 ajax 函数,但能够拥有一个对 IE7 友好的 JSON 替代方案有时会很有用,所以谢谢指出这个功能。
    • 来自 jQuery 源:parseJSON: JSON.parse, 所以我不会依赖 jQuery.parseJSON。
    • 记录在案,关于@Sam 的评论。这仅适用于 jQuery 2.0,它已经放弃了对旧浏览器的支持。在 1.9.x 中,parseJSON 是通过回退实现的。
    【解决方案2】:

    您不需要手动解析 JSON。您可以使用getJSON 函数:

    $.getJSON('/ajax/buy', { 'categoryname' : chosenSelected }, function(data) {
    
        // data will be already a parsed JSON object
    });
    

    您尝试调用的parse 方法在json2 库中可用。

    【讨论】:

    • 谢谢!我找不到类似的 $.postJSON 函数。有什么特殊原因吗?
    • 如果真的没有类似的函数,看起来 Luc'as 的想法会很好: $.post('/ajax/buy', { 'categoryname' : selectedSelected }, function(data ) { 数据 = jQuery.parseJSON(数据);
    • 不,没有什么能说服我手动解析 JSON 比使用 jQuery 中的内置功能更好,我的意思是这会让你编写更多代码并且拥有更多代码为了达到同样的目的,你犯错的机会就越大。
    • 如果你想使用post 那为什么不呢:$.post('/ajax/buy', { 'categoryname' : chosenSelected }, function(data) { // data will already be parsed here });
    • 为什么数据已经被解析了? “数据”是由“/ajax/buy”创建的 JSON。我需要以某种方式解析它。
    【解决方案3】:

    您需要添加一个 JSON 解析器。旧的浏览器不包括那个。

    1 - 转到存储库:https://github.com/douglascrockford/JSON-js/

    2 - 下载 json2.js 并将其包含在您的网站或应用中。

    仅此而已。

    【讨论】:

    • 如上所述,我相信只有当您还想将 JavaScript 编码为 JSON 时,它才是绝对必要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    相关资源
    最近更新 更多