Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
Javascript 如何从这个API中提取JSON数据?_Javascript_Jquery_Json_Api - Fatal编程技术网

Javascript 如何从这个API中提取JSON数据?

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

我正在重新编写一个天气应用程序,我使用了不同的API。我遇到了一个问题,我无法从上述API获得的JSON中提取任何内容。是我使用了错误的符号,还是我的JSON实际上没有正确地传递到我的JS脚本中

我的本地计算机上的代码

$(文档).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+"&#8451</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+"&#8451</h4>");