【问题标题】:Phonegap localStorage returns the string "[object Object]" instead of the objectPhonegap localStorage 返回字符串“[object Object]”而不是对象
【发布时间】:2011-07-27 14:51:41
【问题描述】:

我尝试在 Phonegap 中使用 localStorage 对象,但 getItem 只接收字符串 "[object Object]",而不是获取对象:

var storage = window.localStorage;
storage.setItem('test',{'name':'mark','greeting':'Hello'});
console.log(storage.getItem('test'));

在谷歌浏览器的控制台中显示:

[对象对象]

“console.log(storage)”的输出如下:

贮存 ... 测试:“[对象对象]”

如果我尝试访问对象的属性,它只会显示“未定义”:

storage.getItem('test').name

任何想法如何让它工作?

【问题讨论】:

  • 您确定控制台不只是显示 [object Object]吗? console.log(storage.getItem('test').name) 显示什么?
  • 当您尝试存储字符串以外的任何内容时,setItem 将在其上调用“.toString()”,在您的情况下为“[object Object]”。做 Martinj 下面说的,先把它串起来。此外,这与 PhoneGap 无关,而是 UIWebview/Webkit 问题。

标签: javascript html object cordova local-storage


【解决方案1】:

HTML5 localStorage允许您存储strings only

您必须在存储对象时执行JSON.stringify,在检索对象时执行JSON.parse

【讨论】:

  • 我正在使用 dojo 并且做了 dojo.toJson 和 dojo.fromJson
  • stringify 和 parse 方法很有价值。但在 Android 上(在三星 2.3.3 上的应用内浏览器中测试),如果我尝试这个,则会发生以下错误:“Web 控制台(5504):在 file:///android_asset/www/ 处未捕获非法访问”等: JSON.parse(localStorage.getItem('purchases'))
  • @Wytze:如果你只做localStorage.getItem('purchases'),没有JSON.parse,也会发生错误吗?因为“非法访问”听起来问题出在 localStorage,而不是 JSON。
  • 谢谢 Martijn。如果项目仍然是空的,那么就会发生错误。 LocalStorage.getItem('purchase') 会返回 null,这会导致 JSON.parse 抛出非法访问错误。
猜你喜欢
  • 2022-11-03
  • 2016-03-19
  • 2013-05-05
  • 2014-07-11
  • 2021-04-05
  • 1970-01-01
  • 2022-10-21
  • 2020-08-30
  • 2018-05-24
相关资源
最近更新 更多