【问题标题】:JSON.stringify and JSON.parse not working in IE9?JSON.stringify 和 JSON.parse 在 IE9 中不起作用?
【发布时间】:2011-11-01 01:19:35
【问题描述】:

我到处都在使用JSON.Stringify 和JSON.parse,它在Firefox 中运行良好。它不再适用于 IE9,也不适用于 IE8。我能做什么?

【问题讨论】:

标签: javascript jquery json internet-explorer-8 internet-explorer-9


【解决方案1】:

唯一的问题是,发送 UTF-8 标头会使 JSON 无效(IE 不/不喜欢那样)。正如问题所描述的那样,这可能仍然适用于 IE9... 几年前曾经写过how to。将 JSON 支持添加到可以解析原生 JSON 的浏览器可能不是最佳解决方案,因为它会产生无用的开销 - 只是因为未能以预期格式提供 JSON。

【讨论】:

    【解决方案2】:

    作为替代方案,在您可能出于某种原因需要在严格模式下运行的情况下(我有另一个包含“use strict”的库),您可以在这里查看:https://github.com/douglascrockford/JSON-js。我对此进行了修改以首先检查 JSON 是否未定义,如果是,则仅生成函数 JSON.parse:

    if (typeof JSON === "undefined") {
        var JSON = {
            parse: <insert value of json_parse from library here>
        };
    }
    

    我的问题是应用程序代码在 IE9 中不起作用(我相信参与的库正在使用严格模式)。这为我解决了问题。

    【讨论】:

      【解决方案3】:

      你为什么要依赖拥有该对象的浏览器而不是只包含 Douglas Crockford 的脚本文件。你可以在这里找到缩小的文件:http://www.json.org/js.html

      导入后,您不必担心浏览器中存在的方法。

      【讨论】:

      • 对我来说看起来更好,但我应该添加哪个文件。有很多文件github.com/douglascrockford/JSON-js
      • 使用 json2.js。这是最新的.. 如果可以的话,得到缩小的 1
      • 没有什么特别的,只是一个没有空格的文件返回和缩小变量名等以减少文件大小..谷歌 bat 我们缩小你会发现它是什么..如果 thud 缩小文件没有拾取 json2 .js,如果你以后想要的话,你可以考虑缩小它
      • 当我开始使用JSON.stringify 时,我惊讶地发现它内置在浏览器 (Firefox) 中,尽管我确信它在 IE8 中不起作用。我忘记在 IE8 中进行测试,果然,我的应用程序在我在那里尝试后无法运行。感谢您提供有用的解决方案!
      • 我建议仅在浏览器不支持 JSON 对象的情况下有条件地加载 json.org,方法是检查是否定义了 window.JSON。否则你会增加下载的 JS 文件的数量
      【解决方案4】:

      JSON.stringify 以小写的s 开头。 stringify 和 parse 都是 available in IE8+,但仅限于 standards mode。

      如果您当前使用的是 quirks 模式,请在文档前添加 &lt;!DOCTYPE html&gt;。此外,请注意您调用的 JavaScript 方法的大小写 - 所有内置方法都以小写字符开头。

      【讨论】:

      • 此外,请注意您是否正在针对本地主机地址进行本地开发。几周前对 IE9 的 Windows 更新导致它开始自动对某些 localhost 地址使用兼容模式,这可能导致 JSON.parse/stringify 突然不可用,即使您的标记不应该触发怪癖模式。
      • 我已经有类似
      猜你喜欢
      • 1970-01-01
      • 2015-01-25
      • 2014-07-06
      • 2018-03-10
      • 1970-01-01
      • 2013-12-02
      • 2013-02-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多