sessionStorage returns 未定义
sessionStorage returns undefined
我的客户端应用程序使用 sessionStorage 将数据从一个视图移动到另一个视图。我的代码是:
$("#reportGrid").find("input:checked").each(function () {
rows.push($(this).closest('tr'));
var dataItem = grid.dataItem($(this).closest('tr'));
console.log("TicketNumber => " + dataItem.ticketNumber + " " + dataItem.lineNumber);
// store dataItem in session Storage;
sessionStorage.setItem('selectedRecords', JSON.stringify(dataItem));
var retrievedObject = JSON.parse(sessionStorage.getItem('selectedRecords'));
console.log("Begin -----------");
console.log("userSelectedRecords => " + retrievedObject[0].ticketNumber);
console.log("End -----------");
})
然而,行 console.log("userSelectedRecords => " + retrievedObject[0].ticketNumber);
returns
Uncaught TypeError: Cannot read property 'ticketNumber' of undefined
如何显示之前视图中的数据?
阅读您的代码时,您想要遍历项目数组并获取所有选中的项目。当前,您正在遍历选中的项目并将每个项目存储到会话变量中,然后继续对其进行写入。当你阅读它时,你将永远只有一个项目。如果那是你想要的,那么你只需要引用对象,而不是数组语法。
console.log("userSelectedRecords => " + retrievedObject.ticketNumber);
但我认为这不是您想要做的。我想你想要一组用户选择的元素。要拥有一个数组,您需要构建列表,然后在循环完成时保存整个数组。
//temp holding place for the data
var records = [];
$("#reportGrid").find("input:checked").each(function () {
var dataItem = grid.dataItem($(this).closest('tr'));
records.push(dataItem); //push the element
});
//save it to localstorage
sessionStorage.setItem('selectedRecords', JSON.stringify(records));
//now your syntax would work
var retrievedObject = JSON.parse(sessionStorage.getItem('selectedRecords'));
if (retrievedObject.length) { //make sure we have at least one item
console.log("userSelectedRecords => " + retrievedObject[0].ticketNumber);
}
我的客户端应用程序使用 sessionStorage 将数据从一个视图移动到另一个视图。我的代码是:
$("#reportGrid").find("input:checked").each(function () {
rows.push($(this).closest('tr'));
var dataItem = grid.dataItem($(this).closest('tr'));
console.log("TicketNumber => " + dataItem.ticketNumber + " " + dataItem.lineNumber);
// store dataItem in session Storage;
sessionStorage.setItem('selectedRecords', JSON.stringify(dataItem));
var retrievedObject = JSON.parse(sessionStorage.getItem('selectedRecords'));
console.log("Begin -----------");
console.log("userSelectedRecords => " + retrievedObject[0].ticketNumber);
console.log("End -----------");
})
然而,行 console.log("userSelectedRecords => " + retrievedObject[0].ticketNumber);
returns
Uncaught TypeError: Cannot read property 'ticketNumber' of undefined
如何显示之前视图中的数据?
阅读您的代码时,您想要遍历项目数组并获取所有选中的项目。当前,您正在遍历选中的项目并将每个项目存储到会话变量中,然后继续对其进行写入。当你阅读它时,你将永远只有一个项目。如果那是你想要的,那么你只需要引用对象,而不是数组语法。
console.log("userSelectedRecords => " + retrievedObject.ticketNumber);
但我认为这不是您想要做的。我想你想要一组用户选择的元素。要拥有一个数组,您需要构建列表,然后在循环完成时保存整个数组。
//temp holding place for the data
var records = [];
$("#reportGrid").find("input:checked").each(function () {
var dataItem = grid.dataItem($(this).closest('tr'));
records.push(dataItem); //push the element
});
//save it to localstorage
sessionStorage.setItem('selectedRecords', JSON.stringify(records));
//now your syntax would work
var retrievedObject = JSON.parse(sessionStorage.getItem('selectedRecords'));
if (retrievedObject.length) { //make sure we have at least one item
console.log("userSelectedRecords => " + retrievedObject[0].ticketNumber);
}