2

OpenWeatherAPIgetを使用して、JQueryリクエストを使用して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');
});

次のエラーメッセージが表示されます。

SyntaxError:無効なラベル

ただし、Firebugでクリックできるため、データが返され、期待どおりの結果が得られます。私はこれをすべてクライアント側で実行しているので、おそらくJSONPリクエストに基本的な間違いがあります。このトピックを検索すると、返されるデータがJSON形式ではなくJSON形式である可能性があることも示唆されましたが、違いが何であるかはわかりません。

4

2 に答える 2

8

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);
});

jsFiddle: http: //jsfiddle.net/wCjW3/1/

参照:http ://api.jquery.com/jQuery.ajax/

于 2013-01-28T17:38:39.577 に答える
3

apiは、URLのパラメーターとしてではcallbackなく使用する必要があると言っているようです。jsoncallback

こちらの表に記載されています

callback-JSONPcalbackのfunctionName。http://en.wikipedia.org/wiki/JSONP

次のコードは私のために働きます:

$.getJSON('http://openweathermap.org/data/2.1/find/city?lat=13.3428&lon=-6.2661&cnt=10&callback=?', function(data) { console.log(data); });
于 2013-01-28T17:21:00.563 に答える