Javascript 从JSON文件中提取数据而无需下载

Javascript 从JSON文件中提取数据而无需下载,javascript,jquery,json,Javascript,Jquery,Json,我想运行一个脚本,它接收一个JSON文件,对其执行一个函数,将选定的数据提取并格式化为一个变量$history,然后在HTML中呈现。JSON文件的格式为: {123: {"epochBlocks": 0, "blocks": 0, ..."}, "updatedAt": "2323432" <- (key I want to skip), ...} 在脚本的末尾,我使用$history.text$history以HTML的形式呈现它 使用上述代码,我没有得到任何输出。JSON文件的UR

我想运行一个脚本,它接收一个JSON文件,对其执行一个函数,将选定的数据提取并格式化为一个变量$history,然后在HTML中呈现。JSON文件的格式为:

{123: {"epochBlocks": 0, "blocks": 0, ..."}, "updatedAt": "2323432" <- (key I want to skip), ...}
在脚本的末尾,我使用$history.text$history以HTML的形式呈现它

使用上述代码,我没有得到任何输出。JSON文件的URL是可下载的,所以我不确定脚本是否可以读取它?我还认为if语句可能有问题,所以我把它注释掉了,仍然没有输出。请告诉我这个问题-我的代码或JSON url正在自动下载? 谢谢。

美元.getJSON请求与$history.text$history一样异步;是在请求完成之前执行的,因此$history仍然是

您需要移动$history.text$history;进入“完成”回调:

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);
});
除此之外:$.eachdata.items、functioni、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
}

所以没有属性项。所以您需要编写$.eachdata,函数i,item{

标题有误导性。$history.text$history;应该在完成回调中,否则您将$history设置为en空字符串。请参阅:@Andreas为什么会出现错误?问题更可能是因为getJSON是异步的,$history.text$history;不在完成回调中。@Andreas获取文件对我有用。@t.niese您是对的。我得到了一个CORS错误,但它是由一个扩展而不是AWS引起的…那么这将是另一个重复的感谢,我现在将研究它。所以JSON自动下载不会影响代码,即脚本仍然可以读取它而不添加任何其他内容?@Andreas确定为什么我将其链接为dup,将答案写为community wiki,然后添加了t关于每一个可能被视为输入错误的附加说明,这将是下一个问题。@DamjanOstrelic如果您在getJSON中使用ajax请求文件,则自动下载将不会产生任何效果。现在已获得输出,只需计算格式!谢谢!
{
  "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
}