【发布时间】:2017-10-15 09:00:07
【问题描述】:
我正在尝试利用 HTML5 sessionStorage 来保留以前从外部 API 检索到的一些数据,以便在以后再次调用时缓存数据,而不是建立连接来检索已经检索到的冗余数据会议。
function getItemWithTooltip(item_id, div_id) {
var xmlhttp2 = new XMLHttpRequest();
var url2 = "https://api.guildwars2.com/v2/items/"+item_id;
xmlhttp2.onreadystatechange=function() {if (xmlhttp2.readyState == 4 && xmlhttp2.status == 200) {parseItemTooltip(xmlhttp2.responseText);}};
xmlhttp2.open("GET", url2, true);
//xmlhttp2.send();
var item;
var cache_enabled = true;
// Cache results for quicker page loads
if (cache_enabled == true){
if (Storage !== void(0)) {
// Retrieve data (if stored)
if (sessionStorage[String(item_id)]) {
//item = JSON.parse(sessionStorage.getItem(String(item_id)));
item = JSON.parse(sessionStorage[item_id.toString()]);
//window.alert("sessionStorage: Retrieved");
//alert(typeof (item));
//alert(item);
}
}
}
if (item == null){
xmlhttp2.send();
}
function parseItemTooltip(response) {
//var item = JSON.parse(response);
if (item == null){
// Store data
if (cache_enabled == true){sessionStorage.setItem(item_id.toString(), JSON.stringify(response));}
//sessionStorage.setItem(String(item_id), item);
//if (cache_enabled == true){sessionStorage.setItem(String(item_id), response);}
//window.alert("sessionStorage: Stored");
item = JSON.parse(response);
}
//..More code here that was not relevant and removed to save space..
}
}
【问题讨论】:
-
PS:它第一次工作,当它远程检索数据时,但是它无法使用从 sessionStorage 检索的数据工作。 :(
-
有你的 json 样本要展示吗?
-
您确定
sessionStorage[String(item_id)]确实有效吗? -
是的,那部分正在工作。
-
String(item_id) 或 item_id.toString() 似乎都可以正常工作。
标签: javascript json sessionstorage