我对本地存储做了一些研究。似乎是存储数据的一个不错的选择。在我的单页应用程序中,我使用 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 和本地存储都具有相同的结构,但在上面测试 loacl 的代码示例中,hasOwnProperty()
指示为 false
存储在控制台中。我想知道我的代码是否无效或其他原因导致我的代码失败。我想使用本地存储的主要原因是用户失去互联网连接的情况。在这种情况下,我想将表单数据保存在本地存储中,这样用户就不会丢失数据。如果有人可以提供示例或提供任何提示帮助,请告诉我。谢谢!
最佳答案
localStorage
存储字符串,您知道这些字符串,因为您在保存时已经JSON.stringify()
了。但您需要更换支票
localStorage[recID].hasOwnProperty("L_NAME")
与
JSON.parse(localStorage[recID]).hasOwnProperty("L_NAME")
编辑:您有一个整个对象,您将其存储为localStorage[recID]
,因此您需要解析它,然后访问结果对象,例如:
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']
。括号的位置至关重要。
关于javascript - 如何检查本地存储数据集中是否存在值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167393/