【问题标题】:Safari and Chrome do not want to JSON.parseSafari 和 Chrome 不想 JSON.parse
【发布时间】:2011-12-03 23:23:03
【问题描述】:

我正在使用带有这段代码的各种浏览器尝试 localStorage 和 JSON:

        function getStorage() {
            stored = JSON.parse(localStorage['test']);
            if (typeof stored == 'object') {return stored;}
        }

Chrome 给我以下错误消息:"Uncaught SyntaxError: Unexpected token u" 函数主体内的第一行。对于同一行,Safari 显示 “SyntaxError: Unable to parse JSON string”。 Firefox 不会为该行提供任何错误消息。

其他 JSON.parse 示例(来自书籍等)在 Safari 和 Chrome 中都可以正常工作。例如,Nicholas Zakas 的“Pro JavaScript”中的这个:

            var jsonText = "{\"name\":\"Nicholas C. Zakas\", \"age\":29, \"author\":true }";
            var object = JSON.parse(jsonText);
            alert(object.name);  //"Nicholas C. Zakas"

让它工作完全没有问题。本地存储也适用于两者。

我还使用file -I my file 检查了我所有文件的编码,并且所有文件,包括我自己的和上述书中的文件,都被编码为filename.html: text/html; charset=us-ascii - 所以编码似乎不是问题在这里。

这很令人困惑。非常感谢您的帮助。

/詹姆斯

【问题讨论】:

  • 您在本地存储中存储的数据是什么?似乎不符合json。
  • 我们能看到你试图解析的json字符串吗?
  • 当然,这是 JSON 字符串:if (window.localStorage) { if (localStorage.length == 0) { json = {"test": ["foo", "bar"]} // json is a global variable window.localStorage.setItem("test", JSON.stringify(json)); } }
  • 您是否尝试使用 console.log(localStorage["test"]) 来检查存储的值?
  • 问题解决了!感谢您直接调试 localStorage 内容的建议。该错误位于if (localStorage.length == 0) 行中。我在 localStorage 中有一些来自以前应用程序的其他数据,因此 json 没有设置为该条件内的任何内容。现在我使用if (!localStorage['test']) {//set json}。 Safari 和 Chrome 就这么多 - 在 Firefox 6.0.2 中,localStorage 因各种原因无法正常工作:stackoverflow.com/questions/7355324/…

标签: json google-chrome safari


【解决方案1】:

因为localStorage['test']的内容是undefined,所以出乎意料的u

【讨论】:

    【解决方案2】:

    感谢直接调试localStorage内容的建议。如果(localStorage.length == 0),该错误就在行中。我在 localStorage 中有一些其他数据来自以前的应用程序,因此 json 没有设置为该条件内的任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2020-10-09
      • 2017-06-04
      • 2014-03-04
      • 1970-01-01
      相关资源
      最近更新 更多