如何使用存储在phonegap app中localStorage的json feed?

ist*_*tan 5 javascript ajax jquery json cordova

这是我在做什么,

获取请求到我的Web服务器,响应在json中.使用jquery模板在我的应用程序中呈现该回调数据.很简单,就像一个魅力.

问题出在这里:我想在本地存储一些这样的数据,这样我的应用程序就不必每次都从服务器上获取它(3g很慢,每次事务都会伤害我的UX ......).所以这就是我的尝试:

$.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'); 

    ...
Run Code Online (Sandbox Code Playgroud)

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

如果我做一个简单的

alert(foo);
Run Code Online (Sandbox Code Playgroud)

在抓取本地存储的数据后,我看到了类似的东西

[object, Object],[object, Object],[object, Object],...,[object, Object]
Run Code Online (Sandbox Code Playgroud)

如果我做

alert(foo[0])
Run Code Online (Sandbox Code Playgroud)

我明白了

'['
Run Code Online (Sandbox Code Playgroud)

如果我做

alert(foo[0].name);
Run Code Online (Sandbox Code Playgroud)

我明白了

'undefined' 
Run Code Online (Sandbox Code Playgroud)

所以,我最好的猜测是这是由于数据格式在通过localStorage存储时从json变为字符串引起的.你同意吗?而且,如果是这样,我该怎么做才能让它回到json格式?

万分感谢!

Joe*_*Joe 11

您需要像这样使用JSON:

localStorage.setItem('foo', JSON.stringify(data));
Run Code Online (Sandbox Code Playgroud)

然后解析它:

JSON.parse(localStorage.getItem('foo'))
Run Code Online (Sandbox Code Playgroud)