Javascript 如何从这个API中提取JSON数据?
我正在重新编写一个天气应用程序,我使用了不同的API。我遇到了一个问题,我无法从上述API获得的JSON中提取任何内容。是我使用了错误的符号,还是我的JSON实际上没有正确地传递到我的JS脚本中 我的本地计算机上的代码Javascript 如何从这个API中提取JSON数据?,javascript,jquery,json,api,Javascript,Jquery,Json,Api,我正在重新编写一个天气应用程序,我使用了不同的API。我遇到了一个问题,我无法从上述API获得的JSON中提取任何内容。是我使用了错误的符号,还是我的JSON实际上没有正确地传递到我的JS脚本中 我的本地计算机上的代码 $(文档).ready(函数(){ var long; var lat; 当前城市; 无功电流状态; var国家; $.getJSON(“https://crossorigin.me/http://ip-api.com/json”,函数(data_init){//access R
$(文档).ready(函数(){
var long;
var lat;
当前城市;
无功电流状态;
var国家;
$.getJSON(“https://crossorigin.me/http://ip-api.com/json”,函数(data_init){//access RESTFUL-geo-location-api和set-latitude.longitude
lat=数据_init.lat;
long=数据_init.lon;
currentCity=数据初始城市;
currentState=数据初始区域;
国家=起始国家的数据;
$(“.heading”).append(“+currentCity+”,“+currentState+”
“+country+”);
变量api=”https://crossorigin.me/https://api.darksky.net/forecast/1246aa267663e22a4e428e4b20f0df5b/“+lat+”,“+long;
//获取天气空气污染指数
控制台日志(api);
console.log(currentCity);
console.log(当前状态);
控制台日志(国家);
$.getJSON(api,函数(数据){
var iconCode=data.current.icon;//从API获取与当前天气条件相关的图标
$(“.message”).append(“当前温度:+data.Current.temp+”℃”);
$(“.message”).append(“条件:+data.weather[0].main+”);
$(“#显示”)。在('click',函数(){//单击按钮
data.main.tempData//单击“将温度转换为法伦海”
});
$(“.message”)。追加(“”);
$(“#tempData”).hover(函数(){
$(this.fadeToggle('slow',function(){});
});
控制台日志(数据);
});
});
//$(“#显示”)。在(“单击”,函数(){
//});
});
我不知道您使用的是什么API,但您的回调似乎不完整
回调通常采用以下格式编写:
$.getJson("your url", function (err, data) { ... })
您可能忘了处理它的err参数。回答:我访问JSON的语法不正确。我正在尝试访问“当前”属性。它应该是
var iconCode = data.currently.icon;
$(".message").append("<h4 id='tempData'>Current Temperature: "+data.currently.temperature+"℃</h4>");
var iconCode=data.current.icon;
$(“.message”).append(“当前温度:+data.Current.Temperature+”℃”);
您是否已检查请求是否实际成功完成?如果是,您是否检查了返回的数据是否符合预期格式?您检查过控制台有无错误吗?@PatrickEvans,因为控制台只说当前没有定义。但它确实记录了正确的api url。当我复制到浏览器中时,它就是正确的JSON。这让我觉得我的符号就是问题所在什么是未定义的?您是否记录了data\u init
和data
以查看它们是否真的包含您的数据?@PatrickEvans它说'current'未定义,是的,data和data\u init都记录了正确的JSONY您拥有data[current]。icon
该语法假设您当前有一个名为的变量,如果您想访问数据的当前属性
,您可以像访问数据一样进行操作。当前或数据[“当前”]
,在您拥有数据后,同样的事情也会发生。当前[temp]
可能意味着数据。目前,只有当使用这些参数调用.temp
回调时,才会以这种方式定义回调。这意味着,如果实际执行回调的代码将传入错误参数和数据参数,则不必这样编写。并且,回调按该顺序传递数据、状态、xhr
。您正在考虑回调,就像nodejs中的回调一样,它首先传递一个错误参数这就是为什么我说:“-我不知道您使用的是什么API”和“-回调通常是编写的…”
var iconCode = data.currently.icon;
$(".message").append("<h4 id='tempData'>Current Temperature: "+data.currently.temperature+"℃</h4>");