javascript - 在具有多个 url 的 javascript 中添加 JSON

标签 javascript jquery json mapbox

我需要解析多个 JSON 文件,提取不同的值,然后比较这些值。不过,我无法显示多个 JSON 文件……我认为“request.onload”在 for 循环中只工作一次,所以也许这就是原因。

var myArray = [7138, 6237];
for (i = 0; i < myArray.length; i++) {
  //var id = 55;
  var head = "https://developer.trimet.org/ws/V2/arrivals/locIDs/";
  var tail = "/appID/30BE7218095886D573C04A41C/xml='true'";
  var url = head + myArray[i] + tail;
  //console.log(url);

  var request = new XMLHttpRequest();
  request.open('GET', url);
  request.responseType = 'json';
  request.send();

  request.onload = function() {
    var arrivalData = request.response;

    console.log(arrivalData.resultSet);

}}

代码解释:数组“myArray”包含两个公交车站 ID,它们是通过另一段代码找到的(我正在制作一个小应用程序来查找最近的 10 个公交车站,然后告诉用户距离下一个公交车站还有多长时间公共(public)汽车到达每个公共(public)汽车站。为了测试它,我只使用两个常量 ID)。这些 ID 被插入到一个 url 中,该 url 包含一个 JSON 脚本,该脚本详细说明了该公交车站的公交时刻表。

我想提取 JSON 并将其另存为代码中的单独 JSON。我认为当前的代码现在可以做到这一点,但它似乎只能工作一次。最后,for循环会将到站时间添加到一个数组中,比较这些时间哪个来得早,然后找到最快的到站时间和对应的公交车站ID。最后,我想让这个函数可以接受任何公交车站 ID 数组,这样我就可以找到任何一组公交车站的最快公交车到达时间。

如果您想查看到达时间时间,您可以转到 url 链接并查看 JSON - 到达时间可以是“估计的”或“预定的”,并且值是自 1970 年 1 月 1 日以来的毫秒数。

如果有人可以帮助我只要能够访问 request.onload 函数之外的 JSON,我将不胜感激。

最佳答案

XMLHttpRequest 以异步方式工作。而且for循环是同步的。所以你面临这个问题。我认为下面的代码可以解决您的问题

var myArray = [7138, 6237];
  myArray.forEach(function (id)  {
    //var id = 55;
    var head = "https://developer.trimet.org/ws/V2/arrivals/locIDs/";
    var tail = "/appID/30BE7218095886D573C04A41C/xml='true'";
    var url = head + id + tail;
    //console.log(url);

    var request = new XMLHttpRequest();
    request.open('GET', url);
    request.responseType = 'json';
    request.send();

    request.onload = function() {
      var arrivalData = request.response;

      console.log(arrivalData.resultSet);

    }
  })

关于javascript - 在具有多个 url 的 javascript 中添加 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42991572/

相关文章:

javascript - Chart.js 折线图中的渐变太模糊

javascript - JavaScript 中的 PHP JSON 变量

javascript - 如果 ajax 调用时间低于 1 秒则隐藏微调器

javascript - 为什么即使窗口宽度较小,window.innerWidth 也会返回 477px?

jquery jscrollpane宽度根据内容自动调整

Javascript:数组不为空但大小为 0

javascript - 如何添加带有特殊字符的字符串作为json键?

javascript - 以编程方式关闭 Internet Explorer

javascript - 分解 JS 函数

javascript - 使用 jQuery 和 Ajax 发送输入数组