从localstorage中删除Json

时间:2014-02-26 13:59:12

标签: jquery json

我不知道我是否过度复杂化了......但我正试图在本地存储中删除json对象。只有一个localstorage项包含所有数据。

我没有错误,但当我回到页面时,该项目仍然存在。

控制台记录Json

{
"cities": [
    {
        "id": 0,
        "storename": "test",
        "notes": "test",
        "rejected": "on",
        "offer": "test"
    },
    {
        "id": 1,
        "storename": "test2",
        "notes": "test2",
        "rejected": "on",
        "offer": "test2"
    }
]

}

Jquery的

$('.deleteButton').click(function(){

        var id = $(this).data('centreid');

        $(this).remove();

        localStorage.clear();

        console.log(JsonData);

        $.each($.parseJSON(JsonData), function(idx, cities) {

            $.each(cities, function(idx, obj){

                delete id[id];

            });     
        });

        var Count = 0;
        localStorage.setItem(Count, JsonData);  
        JsonData = localStorage.getItem(Count);

3 个答案:

答案 0 :(得分:1)

问题是你的$.parseJSON(JsonData)返回已解析的对象,而不是更改此对象,但是没有存储在任何地方,所以就这样了。您需要将已解析的对象存储到变量,修改并使用此对象调用SetItem。工作示例:

$('.deleteButton').click(function(){
    var id = $(this).data('centreid');
    $(this).remove();
    localStorage.clear();
    console.log(JsonData);

    var data = JSON.parse(JsonData),
        indexToRemove = null;

    $.each(data['cities'], function(idx, obj){
        if (obj['id'] == id) {
            indexToRemove = idx;
            return false;
        }   
    });

    if (indexToRemove !== null) {
        data['cities'].splice(indexToRemove, 1);
    }

    var Count = 0;
    localStorage.setItem(Count, JSON.stringify(data));  
    JsonData = localStorage.getItem(Count);

答案 1 :(得分:0)

您正在使用$.parseJSON从已解析的JSON字符串中删除该对象。但是,将项目设置为本地存储时,您将再次使用原始字符串。

要解决 - 用修改后的JSON对象覆盖字符串。

答案 2 :(得分:0)

线是否正确?

 delete id[id];

您不是仅通过此对象移动

再次设置变量
  var data = $.parseJSON(JsonData);
  for(var prop in data){

        for(var i=0; i< data[prop].length; i++){
            if(data[prop][i].id == id){
               data[prop].splice(i, 1);
               break;  
            }
        }     
   }
   JsonData = json.stringify(data);