使用JavaScript和Jade添加到localStorage

时间:2013-10-18 08:37:51

标签: javascript ajax node.js backbone.js pug

有Jade的问题以及数据在呈现时传递给它的方式。

我正在尝试保存[{key1: "val1", key2: "val2"}, ...}];中的数据 格式,但有问题,因为它显示为下面的结果。

结果

key: xyz value:[{"artist":"Lady Gaga",...

这是我在服务器端Node.js上使用的代码,它传递的很好......

res.render('musics', {
    title: 'site',
    result: JSON.stringify(result)
});

这是我遇到问题的代码,因为我必须在jade中调用result ...

script
    function local (arr) {
        var i;
        i = "#{result}";
        localStorage.setItem('xyz', i);
    }
    console.log('stored');
    local();

围绕结果的引用搞砸了,但没有它们我得到了意外标识符的错误......

任何建议或者如果通过Backbone进行ajax路由可能会更好(这是我在客户端使用的)我愿意,只是为了提出一些指示 - 数据被刮掉并通过选择一个表格帖子 - 所以数据在帖子之后回来并且是准时转移,所以如果我做了一个ajax调用它必须包括帖子和get,否则我不知道如何接收它。 ..也许res.json(结果)在服务器端,但然后页面需要以某种方式呈现...打开建议。谢谢!最终,我希望它能够在没有“围绕一切的情况下进入localStorage。”

2 个答案:

答案 0 :(得分:2)

你的jade片段应该是这样的:

script!= "(function() {localStorage.setItem('xyz',JSON.stringify(" +result + ");})();"

使用!=你告诉jade不要逃避以下内容,在客户端,你必须先将再次字符串化,然后再将数据存入本地存储。

答案 1 :(得分:0)

作为对@ greelgork的答案的改进:

这适用于JSON数组

script!= "(function() {var items = []; items = JSON.parse(localStorage.getItem('Stored_items')); console.log(JSON.stringify(items)); items.push(" + JSON.stringify(product) + "); localStorage.setItem('Stored_items', JSON.stringify(items)); })();"

无论如何,在插入localStorage之前将项目推入stringified需要localStorage因此,应该修改@ greelgorke的答案:

单项

script!= "(function() {localStorage.setItem('xyz',JSON.stringify(result)); })();"

因此,JSON.stringifystring之外,就像所有其他javascript代码一样, 这就是我在我的项目中使用它和它的问题

信用 Push JSON Objects to array in localStorage