Jquery 从本地存储中删除Json

Jquery 从本地存储中删除Json,jquery,json,Jquery,Json,我不知道我是否把事情复杂化了。。但我正在尝试在本地存储中删除json对象。只有一个localstorage项保存所有数据 我没有收到任何错误,但当我返回页面时,该项目仍然存在 控制台记录的Json { "cities": [ { "id": 0, "storename": "test", "notes": "test", "rejected": "on", "offer": "test" },

我不知道我是否把事情复杂化了。。但我正在尝试在本地存储中删除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);

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

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

行是否正确

 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);
var data=$.parseJSON(JsonData);
用于(数据中的var prop){
对于(变量i=0;i
问题在于,
$.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);

您使用的是哪个浏览器和jquery的哪个版本?请定义最新的数字版本pleasecode.jquery.com/jquery-1.9.1.min.js“>try window.localStorage.clear()我试图做的就是清除存储,从json中删除一个项目,然后将json字符串重新编译到localStorage中。