gpt4 book ai didi

javascript - HTML5 Web 存储 - 存储 JSON 数据然后检索它

转载 作者:行者123 更新时间:2023-12-03 12:13:21 28 4
gpt4 key购买 nike

在我的应用程序的主页上,我正在进行 AJAX 调用以获取应用程序各个部分所需的大量数据。该调用如下所示:

var url = "/Taxonomy/GetTaxonomyList/"
$.getJSON(url, { includeOverrides: true }, function (jsonData) {
}).success(function (jsonData) {
sessionStorage.taxonomyWithOverrides = jsonData;
}).fail(function (jqXHR, textStatus, errorThrown) {
...
});

此 AJAX 调用正在调用返回 JSONResult 的 C# 方法。这部分似乎工作正常,因为我得到了我期望的数据。

在另一个页面中,我尝试按如下方式读取此数据:

var taxonomy = [];

if (typeof (Storage) !== "undefined") {
jsonData = sessionStorage.taxonomyWithOverrides;

$.each(jsonData, function (key, data) {
taxonomy.push(data.species);
})
} else {
alertify.alert("Storage not supported");
}

但是,我收到以下 JavaScript 错误:

未捕获类型错误:无法使用“in”运算符在[object Object]中搜索“182782”,[对象对象],...

显然我做错了什么。但是,我在这方面没有太多经验,所以我不知道该去哪里寻找。

这是我返回 JSON 数据的 C# 方法:

public JsonResult GetTaxonomyList(bool includeOverrides)
{
try
{
var taxonomyList = this.TaxonomyData.GetList(this.AccountRowId,0,string.Empty,true, includeOverrides)
.Select(row => row.CommonName + " - " + row.ScientificName)
.ToList();

var jsonList = (from species in taxonomyList
select new { species }
).OrderBy(row => row.species);

return Json(jsonList, JsonRequestBehavior.AllowGet);
}
catch (System.Exception exception)
{
...;
}
}

最佳答案

您存储了一个字符串,当您从存储中取回它时,您必须将其解析回一个对象,因为 $.each 不适用于字符串,但适用于对象和数组

var taxonomy = [];

if (typeof (Storage) !== "undefined") {
jsonData = JSON.parse( sessionStorage.taxonomyWithOverrides || '[]');

$.each(jsonData, function (key, data) {
taxonomy.push(data.species);
})
} else {
alertify.alert("Storage not supported");
}

我假设您有一个可链接的 stringify() 方法,否则请更改

jsonData.stringify();

JSON.stringify(jsonData);

关于javascript - HTML5 Web 存储 - 存储 JSON 数据然后检索它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852892/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com