使用API​​结果创建另一个请求并将它们一起显示

时间:2015-07-07 02:46:43

标签: javascript jquery json

我无法从API检索某些数据,服务器提供如下JSON数据:

http://segue-api.fisl16.softwarelivre.org/api/rooms/1/slots

http://segue-api.fisl16.softwarelivre.org/api/talks/526(号码是谈话ID)

我需要创建一个表来显示与我相关的数据。所以我创建了一个简单的JS函数来从第一个链接(/ rooms / 1 / slots)检索信息并提供HTML表格(代码如下)。

使用我可以从第一个函数中收集的ID,我想向API发出另一个请求(/ talks /" id"),并将结果显示在与ID相同的行上。

最终结果将是来自代码段的表格,其中包含一个名为&#34的新列;描述"其中包含API上的描述(/ talks /" id")与" id"在同一行。

我一无所知,有什么想法吗?



    var room1 = "http://segue-api.fisl16.softwarelivre.org/api/rooms/1/slots"


    $.getJSON(room1,function(data){
    $.each(data.items, function(){
    $("#table").append("<tr><td>"+this['begins']+"</td><td>"+this['talk'].id+"</td><td>"+this['duration']+"</td><td>"+this['talk'].title+"</td><td>"+this['talk'].owner+"</td><td>"+this['talk'].coauthors+"</td><td>"+this['room_name']+"</td>");
    });

});
&#13;
table, th, td {
   border: 1px solid black;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<table id="table">
  <th>Data e Hora</th>
  <th>Id</th>
  <th>Duração</th>
  <th>Título</th>
  <th>Palestrante</th>
  <th>co-palestrantes</th>
  <th>sala</th>

</table>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

如果您无法同时从第二个API获取多个ID的数据,则可以循环创建子查询(http://jsfiddle.net/tmjvzo63/):

room1 = "http://segue-api.fisl16.softwarelivre.org/api/rooms/1/slots";
$.getJSON(room1,function(data){
$.each(data.items, function(){
    var rid = "r"+this['talk'].id;
    $("#table").append("<tr id='"+rid+"'></tr>");
    $("#"+rid).append("<td>"+this['begins']+"</td><td>"+this['talk'].id+"</td><td>"+this['duration']+"</td><td>"+this['talk'].title+"</td><td>"+this['talk'].owner+"</td><td>"+this['talk'].coauthors+"</td><td>"+this['room_name']+"</td>");
    var rj = "http://segue-api.fisl16.softwarelivre.org/api/talks/"+this['talk'].id;
    $.getJSON(rj,function(data){
        console.log(data.resource.id);
        $("#r"+data.resource.id).append("<td>"+data.resource.full+"</td>");
    });
});
});

答案 1 :(得分:1)

您可以执行类似

的操作
$.getJSON(room1,function(data){
    $.each(data.items, function(){
      var row = item;
      $.getJSON("http://segue-api.fisl16.softwarelivre.org/api/talks/" + item["talk"].id, function(dataItem){
        var $table = $("#table");
        if ($table.find("th:last").text() !== "Description") { //Or whatever it is named
          $table.find("th:last").after("<th>Description</th>"); //This creates the TH if it doesn't exist
        }
        $table.append("<tr><td>"+item['begins']+"</td><td>"+item['talk'].id+"</td><td>"+item['duration']+"</td><td>"+item['talk'].title+"</td><td>"+item['talk'].owner+"</td><td>"+item['talk'].coauthors+"</td><td>"+item['room_name']+"</td><td>" + dataItem.description + "</td>");
      })
    })
});