2011-09-20 42 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数组上运行。 –