在页面加载时,我想从本地存储加载JSON,以便能够更新交互式“购物车”。当用户退出页面并返回时,我希望项目仍然存在。
在交互式购物车运行结束时,我将数据保存到本地存储:
localStorage.setItem("datastr", JSON.stringify(data));
这很好用,因为当我加载页面时,我会检查本地存储中是否有数据并记录其详细信息。
if (localStorage.getItem("datastr") !== null) {
console.log("data found");
然后我将这些项添加到数组中:
data.rows.push({
name:loadedarray.name,
quantity:loadedarray.quantity,
price:loadedarray.price
});
但是当我尝试用项目更新数据网格时,
$('#cartcontent').datagrid('loadData',loadedarray);
它给了我以下错误:
"Cannot read property 'options' of undefined"
我认为这个错误意味着它试图读取不存在的东西,但我不确定它出错的地方。
Here's the full JS file如果这有帮助的话。
答案 0 :(得分:0)
这是我使用您提供的数据构建的工作测试。希望您可以通过比较我的代码来找到您的问题。
function setLocalStorage() {
var data = [];
data.push({name: "foo", quantity: 10, price: 4.99});
data.push({name: "bar", quantity: 4, price: 9.99});
localStorage.setItem("datastr", JSON.stringify(data));
}
function getLocalStorage() {
if (localStorage.getItem("datastr") !== null) {
var loadedarray = JSON.parse(localStorage.getItem("datastr"));
var data = [];
data.rows = [];
for (var i = 0; i < loadedarray.length; i++) {
var curr = loadedarray[i];
data.rows.push({
name: curr.name,
quantity: curr.quantity,
price: curr.price
});
}
for (var j = 0; j < data.rows.length; j++) {
var curr = data.rows[j];
console.log("row " + j + ": " + curr.name + " " + curr.quantity + " $" + curr.price);
}
}
}