从JavaScript中获取2个连接的JSON url中的数据

时间:2018-04-21 19:12:39

标签: javascript json

我在JavaScipt中遇到了JSON问题。我有2个不同的JSON URL。其中一个包含有关用户的数据,另一个包含有关帖子的数据。在帖子JSON中,我有一个字段userId

我想找到一种以某种方式连接它们的方法。我需要获取用户及其帖子,然后计算每个用户写的帖子数量。



var postRequest = new XMLHttpRequest();
postRequest.open('GET', 'https://jsonplaceholder.typicode.com/posts');
postRequest.onload = function() {
  var posts = JSON.parse(postRequest.responseText);

  var userRequest = new XMLHttpRequest();
  userRequest.open('GET', 'https://jsonplaceholder.typicode.com/users');
  userRequest.onload = function (){
    var users = JSON.parse(userRequest.responseText);
    for(k in users){
      document.write("</br></br>"+ users[k].name +", " + users[k].username + ", " + users[k].email + "</br>" + "-------------------------------------------------------------------------------------" + "</br>");
      for(k1 in posts){
        if(posts[k1].userId===users[k].id){
          document.write(posts[k1].body + "</br>");
        }
      }
    }
  };
  userRequest.send();

};
postRequest.send();
&#13;
&#13;
&#13;

但我认为它并不好看。我希望将JSON中的数据转换为变量,以便稍后在函数中使用它们。 有人帮吗?我从未连接过2个JSON文件中的数据,并希望以良好的方式完成并获得良好的实践。

3 个答案:

答案 0 :(得分:0)

改为使用

map

答案 1 :(得分:0)

如果你能jquery

$.when($.ajax({
    url: "https://jsonplaceholder.typicode.com/users"
})).then(function(data, textStatus, jqXHR) {
    $.each(data, function(index, value) {
        $.ajax({
            url: "https://jsonplaceholder.typicode.com/posts?userId=" + value.id
        }).then(function(data, textStatus, jqXHR) {
            console.log("UserID:" + data[0].userId + "   Nos Posts:" + data.length);

        });
    });
});

您可以尝试上面的代码,让我知道它是否能解决您的目的

答案 2 :(得分:0)

您可以使用的步骤:

1。您可以根据bodyusers匹配将id属性添加到userid数组中的对象中。< / p>

2。以后,只要您想使用,就可以迭代users数组。

<强>样本

&#13;
&#13;
var postRequest = new XMLHttpRequest();
postRequest.open('GET', 'https://jsonplaceholder.typicode.com/posts');
postRequest.onload = function() {
  var posts = JSON.parse(postRequest.responseText);
  var userRequest = new XMLHttpRequest();
  userRequest.open('GET', 'https://jsonplaceholder.typicode.com/users');
  userRequest.onload = function (){
    var users = JSON.parse(userRequest.responseText);
    
    for(k in users) {
      for(k1 in posts) {
        if(posts[k1].userId===users[k].id){
          users[k].body = posts[k1].body;
        }
      }
    }
    
    console.log("users", users);
  };
  userRequest.send();
};
postRequest.send();
&#13;
&#13;
&#13;