【问题标题】:how to work with json feed stored in localStorage in phonegap app?如何在 phonegap 应用程序中使用存储在 localStorage 中的 json 提要?
【发布时间】:2011-09-24 14:37:37
【问题描述】:

这就是我正在做的,

获取对我的网络服务器的请求,响应是 json 格式。使用 jquery 模板在我的应用程序中呈现该回调数据。非常简单,就像一个魅力。

问题是:我想在本地存储一些数据,这样我的应用就不必每次都从服务器获取它(3g 很慢,每笔交易都会伤害我的用户体验......)。所以这是我尝试过的:

$.ajax({
   url: app_domain + '/pages/home.json',
   type: 'get',
   datatype: 'json',
   data: { mobile: "1" },
   async: true,
   cache: false,
   success: function(data) {

       //store locally
       localStorage.setItem('foo', data);
       //grab from local store
       var bar = localStorage.getItem('foo');
       // populate template with data
       $.tmpl("cityTemplate", bar).appendTo('#all'); 

    ...

这失败了。 (我意识到代码很愚蠢,只是为了方便调试,直到我让它工作)

如果我做一个简单的

alert(foo);

获取本地存储的数据后,我看到了类似

[object, Object],[object, Object],[object, Object],...,[object, Object]

如果我这样做了

alert(foo[0])

我明白了

'['

如果我这样做了

alert(foo[0].name);

我明白了

'undefined' 

所以,我最好的猜测是,这是由于通过 localStorage 存储时数据格式从 json 更改为字符串造成的。你会同意吗?而且,如果是这样,我该怎么做才能将其恢复为 json 格式?

非常感谢!

【问题讨论】:

    标签: javascript jquery ajax json cordova


    【解决方案1】:

    你需要像这样使用 JSON:

    localStorage.setItem('foo', JSON.stringify(data));
    

    然后解析它:

    JSON.parse(localStorage.getItem('foo'))
    

    【讨论】:

    • 啊,太棒了。非常感谢!
    【解决方案2】:
    App.local = (function () {
      var self = {};
    
      self.get = function (key) {
        var b = localStorage.getItem(key);
        return b ? JSON.parse(b) : null;
      }
    
      self.set = function (key, value) {
        var b = JSON.stringify(value);
        localStorage.setItem(key, b);
      }
    
      return self;
    })();
    

    现在你有了一个很好的本地存储接口,

    var local = App.local;
    local.set('foo', 'bar');
    var bar = local.get('foo');
    console.log(bar);
    

    【讨论】:

      猜你喜欢
      • 2015-05-25
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多