如何将 JSONP GET 请求与 OpenWeatherAPI 一起使用



我正在尝试使用OpenWeatherAPI使用JQuery get请求来执行获取JSONP数据。我像这样构建我的查询:

function getWeather(callback) {
    var weather = 'http://openweathermap.org/data/2.1/find/city?lat=13.3428&lon=-6.2661&cnt=10&jsoncallback=?';
    jQuery.getJSON(weather, callback);
}
// get data:
getWeather(function(data){
    console.log('weather data received');
});

我收到以下错误消息:

语法错误:标签无效

但是,数据正在返回,因为我可以在Firebug中单击它,它给了我预期的结果。我在客户端执行这一切,所以也许我的 JSONP 请求有一个基本错误。搜索此主题还表明返回的数据可能是 JSON 形式而不是 JSONP,但我不确定有什么区别。

如果您使用的是 jQuery,则可以使用内置的 JSONP 功能为您处理回调。只需改用 $.ajax,如下所示:

function getWeather(callback) {
    var weather = 'http://openweathermap.org/data/2.1/find/city?lat=13.3428&lon=-6.26612&cnt=10';
    $.ajax({
      dataType: "jsonp",
      url: weather,
      success: callback
    });
}
// get data:
getWeather(function (data) {
    console.log('weather data received');
    console.log(data.list[0].weather[0].description);
});

js小提琴:http://jsfiddle.net/wCjW3/1/

参考资料: http://api.jquery.com/jQuery.ajax/

看起来 api 说你应该使用 callback 而不是 jsoncallback 作为 url 中的参数。

在此处的表中描述

回调 - 函数名称 JSONP calback. http://en.wikipedia.org/wiki/JSONP

Follwing代码对我有用:

$.getJSON('http://openweathermap.org/data/2.1/find/city?lat=13.3428&lon=-6.2661&cnt=10&callback=?', function(data) { console.log(data); });

最新更新