发布将JSON数据附加到文档

时间:2014-07-30 21:06:04

标签: jquery json

我目前在将某些数据附加到我的html文档时遇到问题。我目前正在为文档添加三个不同的API,但第三个API是我遇到问题的API。我呼吁第三个API在文档稍后调用其他两个后检索信息。第三个API的要点是在另一个API从数据库中检索IP地址列表以用于人口统计目的之后检索地理位置。

$.getJSON("http://api.ipinfodb.com/v3/ip-country/?callback=?&key=myAPIKey&format=json&ip="+ ipAddressfromAPI, 
            {
            format: 'json'
            }).done(function(json){
                $('#countries' + y).append(json.countryName);
                console.log(json.countryName);
            });//end of JSON

现在当我在console.log(json.countryName)时,我发现ipAddresses来自的所有国家/地区都没有显示。有关更多信息,请参阅ID##;#country' + y是通过循环创建的ip地址长度。但问题只是国家名称没有显示。

3 个答案:

答案 0 :(得分:1)

你的代码看起来像这样吗?:

for(var y=0; y < res.result.length; y++){
   //Creating the #countries +y element and appending it to the DOM
   $('<div id="countries' + y +'"></div>').appendTo('body');


   $.getJSON("http://api.ipinfodb.com/v3/ip-country/?callback=?&key=myAPIKey&format=json&ip="+ ipAddressfromAPI, 
        {
        format: 'json'
        }).done(function(json){
            $('#countries' + y).append(json.countryName);
            console.log(json.countryName);
        });//end of JSON
}

在这种情况下,getJSON done函数内的变量y的值为res.result.length。 这意味着当getJSON请求异步等待响应启动done函数时,你的for循环仍在执行并将y变量增加到最大值。

然后来自AJAX调用的响应正在触发done函数,并且您尝试将countryName附加到无效元素。

如果是这种情况,请尝试像这样的代码:

for(var y=0; y < res.result.length; y++){
   //Creating the #countries +y element and appending it to the DOM
   $('<div id="countries' + y +'"></div>').appendTo('body');

   (function(){

      var z = y;

      $.getJSON("http://api.ipinfodb.com/v3/ip-country/?callback=?&key=myAPIKey&format=json&ip="+ ipAddressfromAPI, 
        {
        format: 'json'
        }).done(function(json){
            $('#countries' + z).append(json.countryName);
            console.log(json.countryName);
        });//end of JSON
   })();
}

答案 1 :(得分:0)

我不确定console.log( json.countryName )是否正在显示任何内容!!

变化:

$('#countries' + y).append(json.countryName); 

要:

$('#countries' + y).append(json[y].countryName);

这必须在循环中。

答案 2 :(得分:0)

我可以看到,假设console.log日志显示您在控制台中的预期,有两个可能的问题可能导致json.countryName的内容不会附加到文档中。 / p>

  1. y未定义或设置为不正确的值,因此找不到文档中的ID 或
  2. dom中没有与您正在寻找的ID相关的元素