gpt4 book ai didi

javascript - 打开天气图API,获取不到JSON,但是获取到JSONP,无法异步调用

转载 作者:搜寻专家 更新时间:2023-11-01 05:12:43 25 4
gpt4 key购买 nike

我从 google 的 webserivce 获取经度和纬度值,并将这些值传递给打开的天气图 api 以获取温度值。代码如下

function getWeatherData(latitude, longitude) {
var temperature = 0;

var url = "http://api.openweathermap.org/data/2.5/weather?lat=";
url = url + latitude;
url = url + "&lon=";
url = url + longitude;
url = url + "&cnt=1";


$
.ajax({
type : "POST",
dataType : "jsonp",
url : url + "&callback=?",
async : false,
success : function(data) {
temperature = data.list[0].main.temp ;
alert (temperature);

},
error : function(errorData) {
alert("Error while getting weather data :: "+errorData.status);
}
});

return temperature;

所以对于这个 URL

http://api.openweathermap.org/data/2.1/find/city?lat=22.572646&lon=88.36389500000001&cnt=1

正在浏览器中正确获取以下 JSON 响应

{
"message": 0.016,
"cod": "200",
"calctime": "",
"cnt": 1,
"list": [{
"id": 1275004,
"name": "Kolkata",
"coord": {
"lon": 88.36972,
"lat": 22.569719
},
"distance": 0.999,
"main": {
"temp": 301.15,
"pressure": 998,
"humidity": 88,
"temp_min": 301.15,
"temp_max": 301.15
},
"dt": 1371217800,
"wind": {
"speed": 3.1,
"deg": 150
},
"clouds": {
"all": 40
},
"weather": [{
"id": 721,
"main": "Haze",
"description": "haze",
"icon": "50n"
}]
}]
}

但在尝试使用 jQuery 的 ajax 进行相同操作时,我别无选择,只能将值作为 JSONP 获取,无法将其作为 JSON 获取

由于无法获得 JSON 响应,因此无法进行异步调用。

我需要将异步设为假。 因此,每次温度值都设置为 0,无法获得我从 ajax 调用中获得的实际温度值

请帮忙

最佳答案

如果您使用的是 JQuery,那么您可以使用 defer 和 promise。像这样:

function getWeatherData(latitude, longitude) {
var temperature = 0;
var dfd = $.Deferred();
var url = "http://api.openweathermap.org/data/2.5/weather?lat=";
url += latitude;
url += "&lon=";
url += longitude;
url += "&cnt=1";
$.ajax({
type: "POST",
dataType: "jsonp",
url: url + "&callback=?",
async: false,
success: function (data) {
temperature = data.list[0].main.temp;
alert(temperature);
dfd.resolve(temperature);
},
error: function (errorData) {
alert("Error while getting weather data :: " + errorData.status);
}
});
return dfd.promise();
}

这将导致它在通过 ajax 调用解决温度后返回值。我在使用天气 API 时遇到了同样的问题。

关于javascript - 打开天气图API,获取不到JSON,但是获取到JSONP,无法异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17111609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com