【问题标题】:localStorage getItem logs[object Object]localStorage getItem 日志[object Object]
【发布时间】:2014-07-11 09:43:51
【问题描述】:

我正在尝试从本地存储中设置和获取项目,但是当我记录数据时,我得到 [object Object]

我正在尝试获取该对象的视图,例如 {a : v, b : v }...

这里是代码:

var widgets = localStorage.getItem('widgets');
        if (widgets == null) {
         widgets = {
            widget_lot : '',
            widget_td : '',
            widget_cwo : '',
            widget_vehicles : '',
            widget_take : ''
            };  

            widgets.widget_lot = 0;
            widgets.widget_td = 0;
            widgets.widget_cwo = 1;
            widgets.widget_vehicles = 0;
            widgets.widget_take = 0;

            localStorage.setItem('widgets', widgets);
        }

        console.log(widgets); //Logs "[object Object]"

【问题讨论】:

    标签: jquery object local-storage console.log


    【解决方案1】:

    本地存储仅支持string 数据类型。所以你必须

    1. 在保存到 LocalStorage 之前将其转换为字符串

      localStorage.setItem('key', JSON.stringify(data));
      
    2. 转换回 JS 对象,从 LocalStorage 读取

      data = JSON.parse(localStorage.getItem('key')); //forgot to close
      

    如果是你的代码,它应该是 -

    var widgets = JSON.parse(localStorage.getItem('widgets'));
    

    localStorage.setItem('widgets', JSON.stringify(widgets));
    

    【讨论】:

    • 谢谢伙计,工作就像一个魅力..我试图摆弄 JSON,但在令牌 o 上遇到意外错误...删除了本地存储并保存了数据增益,所以它现在可以工作了..再次感谢a
    • 不客气。确保将答案标记为已接受。如果他/她需要同样的帮助,他/她会帮助别人...... :)
    • 一位来自 2021 年的人,谢谢。@brainlesscoder
    【解决方案2】:

    您需要在将对象存储到存储之前对对象进行字符串化

    localStorage.setItem('widgets', JSON.stringify(widgets));
    

    localStorage 将值存储为字符串,因此当您尝试将对象保存到 toString() 时,将调用要存储的值的方法,因为您有一个对象,它将返回 [object Object]

    同样,getItem() 返回一个字符串,使用 JSON.parse() 将其转换为对象

    所以

    var widgets = localStorage.getItem('widgets');
    console.log('stored', widgets)
    if (widgets == null) {
        widgets = {
            widget_lot: '',
            widget_td: '',
            widget_cwo: '',
            widget_vehicles: '',
            widget_take: ''
        };
    
        widgets.widget_lot = 0;
        widgets.widget_td = 0;
        widgets.widget_cwo = 1;
        widgets.widget_vehicles = 0;
        widgets.widget_take = 0;
    
        localStorage.setItem('widgets', JSON.stringify(widgets));
    } else {
        widgets = JSON.parse(widgets)
    }
    
    console.log(widgets); //Logs "[object Object]"
    

    演示:Fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多