2011-09-20 35 views
1

我收到了成功的回覆,但我不完全瞭解如何循環訪問我回來的數據。我在成功回調中提出了一個警告,但這並沒有被調用。這裏是標記和腳本:FCC數據回調getJSON無法正常工作?

<input type="text" name="searchValue" id="searchValue"/> 
<input type="button" name="btnGetLicenes" value="Get Licenses" id="btnGetLicenses"/> 
<div id="Licenses"></div> 
<script> 

    $.getJSON("http://data.fcc.gov/api/license-view/basicSearch/getLicenses?searchValue=Verizon Wireless&format=jsonp&callback=?", 
     function (data) { 
      $.each(data.License, function (i, lic) { 
       $('#Licenses').append('<p>' + lic.licName + '</p>');   
       alert("hello"); //This is not called. 

      }); 
     }); 

</script> 

在上述情況下,我沒有使用搜索文本框中,我只是硬編碼Verizon無線進行測試。

回答

2

你有代表的收集,您可以循環通過中介data.Licenses.License節點:

$.getJSON('http://data.fcc.gov/api/license-view/basicSearch/getLicenses?searchValue=Verizon+Wireless&format=jsonp&jsonCallback=?', 
    function (data) { 
     $.each(data.Licenses.License, function (i, lic) { 
      $('#Licenses').append('<p>' + lic.licName + '</p>');   
     }); 
    } 
); 

而且$alert是不是你可以期望調用的函數。也許你的意思是alert

還要注意的是,根據documentation,允許您設置JSONP回調名稱的參數是jsonCallback,不callback在你的榜樣。

另外,不要忘了對您的查詢字符串參數進行URL編碼,否則您可能會從服務器獲取意外/錯誤的行爲:searchValue=Verizon Wireless應該是searchValue=Verizon+Wireless

最後,這裏是一個live demo看到這在行動。

+0

對,對不起。我的意思是警覺。我用我的代碼取代了我的代碼,但我仍然沒有得到任何輸出。 – Xaisoft

+0

我也是新手,如果你不介意,你能解釋一下你的意思嗎? – Xaisoft

+0

@Xaisoft,看看服務器發送的JSON。將其發佈到http://jsonlint.com進行格式化。你會看到你有一個對象,它包含一個名爲'Licenses'的屬性,它本身就是一個嵌套的對象,它包含一個名爲'License'的屬性,它是一個JavaScript數組。 $ .each運算符在JavaScript數組上運行。 –