我对本地存储做了一些研究。似乎是存储数据的一个很好的选择。在我的单页应用程序中,我使用JSON存储在我的应用程序中多次使用的一些数据。我想知道我是否可以用本地存储替换JSON?还有什么好处?到目前为止,我能够在本地存储中加载数据但我无法检查本地存储中是否存在值以及我将如何读取数据。这是一个例子:
$.ajax({
type: 'POST',
url: 'App.cfc?method='+getMethod,
data: {'recID':recID},
dataType: 'json'
}).done(function(obj){
var numRecs = obj.RECORDCOUNT;
jsonData[recID] = obj.DATA;
localStorage.setItem(recID,JSON.stringify(obj.DATA));
var firstN = jsonData[recID].hasOwnProperty('F_NAME') == true ? $.trim(jsonData[recID]['F_NAME']['value']) : '',
lastN = jsonData[recID].hasOwnProperty('L_NAME') == true ? $.trim(jsonData[recID]['L_NAME']['value']) : '';
console.log(localStorage[recID] +'\n'+ localStorage[recID].hasOwnProperty("L_NAME")); //Check Local Storage if value exist
}).fail(function(jqXHR, textStatus, errorThrown){
if(jqXHR.status == 0){
alert("Fail to connect. Please check your internet connection.");
}else{
alert("Error: "+errorThrown);
}
});
以下是JSON和localStorage数据的示例:
{"F_NAME":{"value":"John"},"L_NAME":{"value":"Smith"}}
我在控制台中转储数据后,JSON和本地存储都具有相同的结构,但在上面的代码示例中hasOwnProperty()
表示false
,我在控制台中测试loacl存储。我想知道我的代码是否无效或其他什么导致我的代码失败。我想使用本地存储的主要原因是用户松散的互联网连接时的情况。在这种情况下,我想以用户赢得的方式将表单数据保存在本地存储中;丢失数据。如果有人可以提供示例或帮助提示,请告诉我。谢谢!
答案 0 :(得分:1)
localStorage
存储字符串,您知道,因为您在保存时已经JSON.stringify()
了。但是你需要更换你的支票
localStorage[recID].hasOwnProperty("L_NAME")
与
JSON.parse(localStorage[recID]).hasOwnProperty("L_NAME")
编辑:您有一个整个对象,它存储为localStorage[recID]
,因此您需要解析该对象,然后访问生成的对象,如:< / p>
const record = JSON.stringify({
"F_NAME": {
"value": "John"
},
"L_NAME": {
"value": "Smith"
}
});
console.log(JSON.parse(record)['F_NAME']['value'])
JSON.parse(record)
成为对象,然后您访问其后代参数['F_NAME']['value']
。括号的放置至关重要。