我需要解析多个 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/