Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将JSON数据追加到文档时出现问题_Jquery_Json - Fatal编程技术网

Jquery 将JSON数据追加到文档时出现问题

Jquery 将JSON数据追加到文档时出现问题,jquery,json,Jquery,Json,我目前在将某些数据添加到html文档时遇到问题。我目前正在向文档中添加三个不同的API,但第三个API是我遇到问题的API。在文档稍后调用其他两个API之后,我调用第三个API来检索信息。第三个API的要点是在另一个API从数据库检索到IP地址列表以用于人口统计目的之后检索地理位置 $.getJSON("http://api.ipinfodb.com/v3/ip-country/?callback=?&key=myAPIKey&format=json&ip="+ ipAd

我目前在将某些数据添加到html文档时遇到问题。我目前正在向文档中添加三个不同的API,但第三个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)时,我找到了所有IP地址来自的国家,但它们没有显示出来。为了获得更多信息,id“#countries”+y是通过一个循环根据找到的ip地址的长度创建的。但是问题是没有显示国家名称。

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

更改:

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


这必须在循环中。

就我所见,假设
console.log
log在控制台中显示您期望的内容,有两个可能的问题可能会导致
json.countryName
的内容不会附加到文档中

  • y
    未定义或设置为不正确的值,因此找不到文档中的id 或
  • dom中没有具有您要查找的id的元素

  • 您的代码是这样的吗

    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
    }
    
    for(变量y=0;y
    在这种情况下,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
       })();
    }
    
    for(变量y=0;y
    为什么URL中有
    format=json
    ,参数中有
    format:'json'
    ?您只需设置一次。使用
    $。json响应中的每个
    附加所有国家请向我们显示从中获取
    y
    的循环。$(“#国家”+y)只是已创建的分隔符的位置,以便它可以将国家信息与适当的分隔符匹配,因此,当您查看html时,它看起来像countries0、countries1、countries2等…client.run(allData,function(res){for(var y=0;yjson的示例吗。结构是什么?在问题中发布它。
    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
       })();
    }