2013-08-28 26 views
2

我試圖調用兩個Reed job site API,一個是搜索由僱主ID列出的所有作業,第二個是檢索所有作業ID的數據在最初的搜索中找到。數據通過第一次API調用即可完成,我可以獲得句柄以將相關數據放在頁面上,而不會出現問題。第二個API會調用並且數據在JS控制檯中可見,但是當它放在頁面上時,控制檯顯示「無法讀取屬性'jobTitle'undefined」。我知道這肯定是一件簡單的事,但我對JS/API的世界比較陌生,所以可以用一隻手做!在API中調用API - jQuery/Handlebars

這裏是我的html

  <div id="results"> 


       <table> 
        <tbody> 

         <script id="reedsearch-template" type="text/html"> 
          <tr> 
           <th>{{ jobTitle }}</th> 
           <td>{{ locationName }}</td> 
           <td>£{{ minimumSalary }} - £{{ maximumSalary }}</td> 
           <td>{{ jobUrl }}</td> 
          </tr> 

         </script> 


        </tbody> 


       </table> 
      </div> 

這裏是我的JS(刪除我的API密鑰)

$(document).ready(function() { 


var reedsearchHtml = $("#reedsearch-template").html(); 
var reedsearchTemplate = Handlebars.compile(reedsearchHtml); 



    $.ajax({ 
     type: "get", 
     async: true, 
     url: "http://www.reed.co.uk/api/1.0/search?employerId=p8799", 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader("Authorization", "Basic " + btoa("API KEY:")) 
     }, 
     success: function (data) { 

      console.log(data.results); 

      for (var i = 0; i < data.results.length; i++) { 
       var job = data.results[i]; 
       var jobHtml = reedsearchTemplate(job); 
       $("#results").append(jobHtml); 

        var reedUrl = "http://www.reed.co.uk/api/1.0/jobs/"; 
        var id = job.jobId 
        var url = reedUrl + id; 

        $.ajax({ 
         type: "get", 
         async: true, 
         url: url, 
         beforeSend: function(xhr) { 
          xhr.setRequestHeader("Authorization", "Basic " + btoa("API KEY:")) 
         }, 
         success: function (data) { 

          console.log(data); 

          var jobDetails = data.results; 
          var detailsHtml = reedsearchTemplate(jobDetails); 
          $("#results").append(detailsHtml); 
         } 
        }); 



      } 
     } 

    }); 

}); 

請溫柔,在此先感謝:)

+0

你應該看看的承諾。 – Abilash

+0

這是一個偉大的... https://github.com/kriskowal/q – Abilash

+0

什麼是'data.results'?你能複製/粘貼一個例子嗎?我假設它可能是一個數組,並且你沒有訪問第一個項目。 '[0]' – ahren

回答

0

設法解決它!只需要以下變化到最後3行 -

var info = data; 
var infoHtml = reedsearchTemplate(info); 
$("#results").append(infoHtml); 

花了大量的測試,但很高興我得到了它的底部:)