Aru*_*run 4 javascript jquery heatmap weather-api
我从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;
Run Code Online (Sandbox Code Playgroud)
所以对于这个URL
http://api.openweathermap.org/data/2.1/find/city?lat=22.572646&lon=88.36389500000001&cnt=1
Run Code Online (Sandbox Code Playgroud)
我在浏览器中正确获得了以下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"
}]
}]
}
Run Code Online (Sandbox Code Playgroud)
但是在尝试使用jQuery的ajax时,我没有选择,除了将值作为JSONP 获取,无法将其作为JSON获取
由于无法获得JSON响应,因此无法使调用异步.
我需要使异步错误.因此,每次都将值温度设置为0并且无法获得从ajax调用获得的实际温度值
请帮忙
如果您正在使用JQuery,那么您可以使用延迟和承诺.像这样的东西:
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();
}
Run Code Online (Sandbox Code Playgroud)
一旦通过ajax调用解决了温度,这将导致它返回值.我使用的是天气API,并且遇到了同样的问题.
| 归档时间: |
|
| 查看次数: |
6412 次 |
| 最近记录: |