如何通过 id/key 从 sessionStorage 访问记录?
How to access record from sessionStorage by id/key?
我有数据保存在 sessionStorage 中,这里是我如何在 sessionStorage 中保存数据的示例。
$.ajax({
type: 'POST',
url: 'Components/Functions.cfc?method='+cfMethod,
data: formData,
dataType: 'json'
}).done(function(obj){
sessionStorage.setItem('Books',JSON.stringify(obj.DATA));
}).fail(function(jqXHR, textStatus, errorThrown){
alert('Error: '+errorThrown);
});
一旦记录保存在 sessionStorage 中,它们将如下所示:
{
"14": {
"COMMENTS": "",
"RECORDID": 14,
"NAME": "Decorah Sector",
"AGENCY": "01",
"CODE": "011A"
},
"15": {
"COMMENTS": "",
"RECORDID": 15,
"NAME": "Waukon Field",
"AGENCY": "01",
"CODE": "011B"
},
"16": {
"COMMENTS": "Test 524",
"RECORDID": 16,
"NAME": "New Hampton",
"AGENCY": "01",
"CODE": "011C"
}
}
如您所见,每条记录都有唯一键,一旦用户决定编辑记录,我所要做的就是从 sessionStorage 中提取数据并传递与唯一键匹配的 id
。这是我的编辑功能的示例:
function editBook() {
var recordID = $(this).closest('tr').attr('id'), // This id will be retrieved from presentation table. Each row has unique id that match sessonStorage.Books records.
bookRecord = JSON.parse(sessionStorage.Books[recordID]);
console.log(bookRecord); //For testing purpose.
if(bookRecord){
$.each(regionRecord, function(name, value){
var elementName = $('[name="'+'frmSave_'+name.toLowerCase()+'"]'),
elementType = elementName.prop('type'),
elementVal = $.trim(value);
switch(elementType){
case 'select-one':
elementName.val(elementVal);
break;
case 'textarea':
elementName.val(elementVal);
break;
default:
elementName.val(elementVal);
}
});
}
}
出于某种原因,在我 console.log()
bookRecord 之后,我没有获取我在 sessionStorage 中传递的特定 id
的数据。我不确定我的语法是否正确或其他问题。我正在执行与 JS 对象用于基于唯一键访问记录的相同步骤。如果有人看到我的代码中的问题在哪里,请告诉我。
该对象是 JSON.parse()
的结果,您需要将索引放在那里。
bookRecord = JSON.parse(sessionStorage.Books)[recordID];
行
bookRecord = JSON.parse(sessionStorage.Books[recordID]);
应该是
bookRecord = JSON.parse(sessionStorage.Books)[recordID];
因为你想访问你从JSON解析的对象的记录。
我有数据保存在 sessionStorage 中,这里是我如何在 sessionStorage 中保存数据的示例。
$.ajax({
type: 'POST',
url: 'Components/Functions.cfc?method='+cfMethod,
data: formData,
dataType: 'json'
}).done(function(obj){
sessionStorage.setItem('Books',JSON.stringify(obj.DATA));
}).fail(function(jqXHR, textStatus, errorThrown){
alert('Error: '+errorThrown);
});
一旦记录保存在 sessionStorage 中,它们将如下所示:
{
"14": {
"COMMENTS": "",
"RECORDID": 14,
"NAME": "Decorah Sector",
"AGENCY": "01",
"CODE": "011A"
},
"15": {
"COMMENTS": "",
"RECORDID": 15,
"NAME": "Waukon Field",
"AGENCY": "01",
"CODE": "011B"
},
"16": {
"COMMENTS": "Test 524",
"RECORDID": 16,
"NAME": "New Hampton",
"AGENCY": "01",
"CODE": "011C"
}
}
如您所见,每条记录都有唯一键,一旦用户决定编辑记录,我所要做的就是从 sessionStorage 中提取数据并传递与唯一键匹配的 id
。这是我的编辑功能的示例:
function editBook() {
var recordID = $(this).closest('tr').attr('id'), // This id will be retrieved from presentation table. Each row has unique id that match sessonStorage.Books records.
bookRecord = JSON.parse(sessionStorage.Books[recordID]);
console.log(bookRecord); //For testing purpose.
if(bookRecord){
$.each(regionRecord, function(name, value){
var elementName = $('[name="'+'frmSave_'+name.toLowerCase()+'"]'),
elementType = elementName.prop('type'),
elementVal = $.trim(value);
switch(elementType){
case 'select-one':
elementName.val(elementVal);
break;
case 'textarea':
elementName.val(elementVal);
break;
default:
elementName.val(elementVal);
}
});
}
}
出于某种原因,在我 console.log()
bookRecord 之后,我没有获取我在 sessionStorage 中传递的特定 id
的数据。我不确定我的语法是否正确或其他问题。我正在执行与 JS 对象用于基于唯一键访问记录的相同步骤。如果有人看到我的代码中的问题在哪里,请告诉我。
该对象是 JSON.parse()
的结果,您需要将索引放在那里。
bookRecord = JSON.parse(sessionStorage.Books)[recordID];
行
bookRecord = JSON.parse(sessionStorage.Books[recordID]);
应该是
bookRecord = JSON.parse(sessionStorage.Books)[recordID];
因为你想访问你从JSON解析的对象的记录。