Jquery 将JSON数据追加到文档时出现问题
我目前在将某些数据添加到html文档时遇到问题。我目前正在向文档中添加三个不同的API,但第三个API是我遇到问题的API。在文档稍后调用其他两个API之后,我调用第三个API来检索信息。第三个API的要点是在另一个API从数据库检索到IP地址列表以用于人口统计目的之后检索地理位置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
$.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
或您的代码是这样的吗
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
})();
}