我想运行一个脚本,该脚本接收一个JSON文件,对该脚本执行一个功能,以将选定的数据提取并格式化为一个变量($history)
,然后以HTML呈现。 JSON文件的格式为:
{123: {"epochBlocks": 0, "blocks": 0, ..."}, "updatedAt": "2323432" <- (key I want to skip), ...}
我的脚本代码:
let $history = "";
$.getJSON(
"https://pooltool.s3-us-west-2.amazonaws.com/8e4d2a3/pools/bd1d1aafead6f652f76f5921b4ffdb429d7eb9d5322d0f4700f4f70f997c5a82/epochstats.json"
).done(function (data) {
$.each(data.items, function (i, item) {
// if (!data.items[i].includes(/[\w]/gi)) { //if key does not contain letters, do below:
$history = $history + data[item].epochBlocks + "/" + data[item].blocks + "\n";
// }
});
});
$("#history").text($history);
在脚本的末尾,我使用$("#history").text($history)
使用<span id="history"></span>
将其呈现为HTML。
使用以上代码,我没有输出。 JSON文件的URL是可下载的,所以我不确定脚本是否可以读取它?我还认为if语句可能有问题,因此我将其注释掉,但仍然没有输出。请指出问题-我的代码或JSON网址是否正在自动下载?谢谢。
$.getJSON
请求是异步的,因此在完成请求之前将执行$("#history").text($history);
,因此$history
仍为""
。
您需要将$("#history").text($history);
移到done
回调中:
let $history = "";
$.getJSON(
"https://pooltool.s3-us-west-2.amazonaws.com/8e4d2a3/pools/bd1d1aafead6f652f76f5921b4ffdb429d7eb9d5322d0f4700f4f70f997c5a82/epochstats.json"
).done(function (data) {
$.each(data.items, function (i, item) {
// if (!data.items[i].includes(/[\w]/gi)) { //if key does not contain letters, do below:
$history = $history + data[item].epochBlocks + "/" + data[item].blocks + "\n";
// }
});
$("#history").text($history);
});
此外:$.each(data.items, function(i, item) {
不会因为返回的数据采用以下格式:
{
"122": {
"epoch": 122,
"epochSlots": null,
"blocks": 0,
"blockstake": 0,
"stake": "1180516948",
"value_for_stakers": 0,
"value_taxed": 0
},
"123": {
"epoch": 123,
"epochSlots": null,
"blocks": 0,
"blockstake": 1180516948,
"stake": "32307048146",
"value_for_stakers": 0,
"value_taxed": 0
},
"124": {
"epoch": 124,
"epochSlots": 0,
"blocks": 0,
"blockstake": 32307048146,
"stake": "32311428152",
"value_for_stakers": 0,
"value_taxed": 0
},
"125": {
"epoch": 125,
"epochSlots": 0,
"blocks": 0,
"blockstake": 32311428152,
"stake": "249343099181",
"value_for_stakers": 0,
"value_taxed": 0
},
"updatedAt": 1587151808
}
因此没有属性items
。所以你需要写$.each(data, function (i, item) {