我目前在将某些数据附加到我的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地址长度。但问题只是国家名称没有显示。
答案 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>
y
未定义或设置为不正确的值,因此找不到文档中的ID
或