【问题标题】:What's the reverse operation to jQuery.parseJSON();jQuery.parseJSON() 的反向操作是什么?
【发布时间】:2015-04-11 14:18:02
【问题描述】:

在 javaScript 中,使用 jQuery 库,我需要:

  • 获取对象数组。
  • 字符串化。
  • 将其保存为 cookie。
  • 刷新时 -> 解析 cookie 并“重新创建”数组。

使用 JSON 很容易。

// Write JSON Cookie
var foo = JSON.stringify(myValue);
writeCookie(foo);

// Read [Eat?] JSON Cookie
var foo = JSON.parse(readCookie("myArray"));
if(foo.length) {
    myArray = foo;
}

(注意:writeCookie(); readCookie(); 是我根据quirksmode.org 上建议的 cookie 函数编写的 2 个函数。)

现在,我的用户群涉及很多 IE8 之前的浏览器。 (不支持这些方法)。所以我想求助于 jQuery 来填补这些漏洞。 Parsing JSON 很简单:

// Read JSON Cookie with jQuery
var foo = jQuery.parseJSON(readCookie("myArray"));
if(foo.length) {
    myArray = foo;
}

我的问题是如何使用 jQuery 将 JSON 对象写入 cookie(以便它适用于早期版本的 IE)。

谢谢

更新:仍然对为什么 jQuery 会提供 parseJSON 函数而不是 writeJSON 函数感到困惑?

【问题讨论】:

  • 取决于数组的大小,您可能希望使用 localStorage,因为它有更高的长度限制
  • 谢谢,我存储的数组不是很大。只存储“选定单位”等信息。
  • @Jon Meh;该解决方案是导入另一个库。我已经在使用几个库。真的不想再添加一个。 (我不喜欢盲目使用其他人的代码)。我只是假设,因为 jQuery 有一个 parseJSON 函数,所以它会有一个 writeJSON 函数。可能是我是 st000pid。
  • @User2:不需要,因为它不需要该功能。如果您需要支持 IE7,那么您必须使用 polyfill。这不是世界末日。

标签: javascript jquery json cookies


【解决方案1】:

这是原生函数JSON.stringify;标准 jQuery 不提供围绕它的兼容性包装器,但浏览器兼容性还不错(适用于 IE >= 8 和其他所有内容)。

【讨论】:

  • 但 IE8 之前的 Internet Explorer 版本不支持此功能。 jQuery 通常具有向后兼容性的方法。
  • @User2:是的。我发现了另一个重复的问题,其中的答案建议了兼容性解决方法。
【解决方案2】:

您可以使用 JSON2 库 https://github.com/douglascrockford/JSON-js 与旧版浏览器兼容。

【讨论】:

    【解决方案3】:

    最好的方法是包含JSON 对象的polyfill。

    但如果你坚持在 jQuery 命名空间内创建一个将对象序列化为 JSON 表示法的方法,你可以这样做:

    Serializing to JSON in jQuery

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      相关资源
      最近更新 更多