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