Javascript $.getJSON和$.ajax无法返回JSON对象
我正在freecodecamp.com上进行“本地天气”前端开发挑战,在调用一些天气API时遇到了一些问题。挑战在于获取用户的位置,然后调用天气API来显示他们所在地区的天气。我试着使用和,但他们都没有返回任何东西。我可以将两个API链接都放在浏览器中,它们都显示我需要的信息,但当我将它们放在javascript中时,它们无法返回信息。下面是我当前使用$.ajax和Dark Sky API的尝试:Javascript $.getJSON和$.ajax无法返回JSON对象,javascript,jquery,json,ajax,api,Javascript,Jquery,Json,Ajax,Api,我正在freecodecamp.com上进行“本地天气”前端开发挑战,在调用一些天气API时遇到了一些问题。挑战在于获取用户的位置,然后调用天气API来显示他们所在地区的天气。我试着使用和,但他们都没有返回任何东西。我可以将两个API链接都放在浏览器中,它们都显示我需要的信息,但当我将它们放在javascript中时,它们无法返回信息。下面是我当前使用$.ajax和Dark Sky API的尝试: $(文档).ready(函数(){ if(导航器.地理位置){ navigator.geoloc
$(文档).ready(函数(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
var lat=位置坐标纬度;
var long=位置坐标经度;
//$(“#loc”).html(lat+”+long);
$.ajax({
url:“https://api.darksky.net/forecast/96dd30a49debe62a67b208f705e3d706/“+lat+”,“+long,
成功:函数(json){
$(“#loc”).html(“您的位置:“+json.latitude+”,“+json.longitude”);
$(“#temp”).html(“温度:+json.current.Temperature);
$(“#fc”).html(“Test”+json.minutely.summary);
},
错误:函数(xhr、状态、错误){
日志(“错误”,状态,xhr,错误);
}
});
});
}
});代码>更改经度变量的名称。Long在javascript中是一个保留字。请参见:更改经度变量的名称。Long在javascript中是一个保留字。请参见:这应该是一个CORS错误
使用数据类型:“JSONP”
使其工作
一个正在工作的JSFIDLE示例
有关更多信息,请参见这应该是一个CORS错误
使用数据类型:“JSONP”
使其工作
一个正在工作的JSFIDLE示例
有关更多信息,请参见。请将此代码复制并粘贴到IDE/文本编辑器中,然后进行测试:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
//if (navigator.geolocation) {
//navigator.geolocation.getCurrentPosition(function (position) {
//var lat = position.coords.latitude;
var lat = '27.268416';
var longTest = '-82.463198';
//$("#loc").html(lat + " " + long);
$.ajax({
url: "https://api.darksky.net/forecast/96dd30a49debe62a67b208f705e3d706/" + lat + "," + longTest,
dataType: 'JSONP',
success: function(json) {
$("#loc").html("Your location: " + json.latitude + "," + json.longitude);
$("#temp").html("Temperature: " + json.currently.temperature);
$("#fc").html("Test " + json.minutely.summary);
},
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
console.log("error", status, xhr, error);
}
});
//});
//}
});
</script>
$(文档).ready(函数(){
//if(导航器.地理位置){
//navigator.geolocation.getCurrentPosition(函数(位置){
//var lat=位置坐标纬度;
var lat='27.268416';
var longTest='-82.463198';
//$(“#loc”).html(lat+”+long);
$.ajax({
url:“https://api.darksky.net/forecast/96dd30a49debe62a67b208f705e3d706/“+lat+”,“+longTest,
数据类型:“JSONP”,
成功:函数(json){
$(“#loc”).html(“您的位置:“+json.latitude+”,“+json.longitude”);
$(“#temp”).html(“温度:+json.current.Temperature);
$(“#fc”).html(“Test”+json.minutely.summary);
},
成功:功能(数据){
控制台日志(数据);
},
错误:函数(xhr、状态、错误){
日志(“错误”,状态,xhr,错误);
}
});
//});
//}
});
我注释掉了if语句并硬编码了一些坐标来测试代码。它起作用了。我拿回一个东西。只要执行if语句,并且代码替换经度和纬度的值,就应该是好的。请不要使用JS保留字符串。请将此代码复制并粘贴到您的IDE/文本编辑器中,并对其进行测试:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
//if (navigator.geolocation) {
//navigator.geolocation.getCurrentPosition(function (position) {
//var lat = position.coords.latitude;
var lat = '27.268416';
var longTest = '-82.463198';
//$("#loc").html(lat + " " + long);
$.ajax({
url: "https://api.darksky.net/forecast/96dd30a49debe62a67b208f705e3d706/" + lat + "," + longTest,
dataType: 'JSONP',
success: function(json) {
$("#loc").html("Your location: " + json.latitude + "," + json.longitude);
$("#temp").html("Temperature: " + json.currently.temperature);
$("#fc").html("Test " + json.minutely.summary);
},
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
console.log("error", status, xhr, error);
}
});
//});
//}
});
</script>
$(文档).ready(函数(){
//if(导航器.地理位置){
//navigator.geolocation.getCurrentPosition(函数(位置){
//var lat=位置坐标纬度;
var lat='27.268416';
var longTest='-82.463198';
//$(“#loc”).html(lat+”+long);
$.ajax({
url:“https://api.darksky.net/forecast/96dd30a49debe62a67b208f705e3d706/“+lat+”,“+longTest,
数据类型:“JSONP”,
成功:函数(json){
$(“#loc”).html(“您的位置:“+json.latitude+”,“+json.longitude”);
$(“#temp”).html(“温度:+json.current.Temperature);
$(“#fc”).html(“Test”+json.minutely.summary);
},
成功:功能(数据){
控制台日志(数据);
},
错误:函数(xhr、状态、错误){
日志(“错误”,状态,xhr,错误);
}
});
//});
//}
});
我注释掉了if语句并硬编码了一些坐标来测试代码。它起作用了。我拿回一个东西。只要执行if语句,并且代码替换经度和纬度的值,就应该是好的。请不要使用JS保留字符串。是否定义了jquery?浏览器的控制台或网络监视器是否提供有关请求或包含此代码段的脚本文件的任何错误或警告?是否定义了jquery?浏览器的控制台或网络监视器是否提供有关请求或脚本文件的任何错误或警告包含此代码段?您不能简单地将请求方法更改为JSONP;服务器可能支持,也可能不支持。我不确定Pointy是否正确,但我更改了我的长变量并添加了数据类型:“JSONP”,我的代码工作正常。您不能简单地将请求方法更改为JSONP;服务器可能支持,也可能不支持。我不确定Pointy是否正确,但我更改了我的长变量并添加了数据类型:“JSONP”,我的代码工作正常。