0

気象警報に関するデータを取得する関数とコールバックを設定しました。何らかの理由で、データが「未定義」として返されます。私はjsonを介してデータをフェッチしていますが、XMLをフェッチしてjsonをコールバックすることを好みますが、jsonをフェッチして返すことは問題ありません。

以下は私のコードですが、読みやすくするためにjsfiddleに入れました。

http://jsfiddle.net/seversides/G7Wr8/

Javascript

$(function () { 
// Specify the location and Api key 
var apiKey = 'myapikey';
var location = 'zmw:00000.1.16172';

// Run the query (pull data from feed)
var url = 'http://api.wunderground.com/api/' + apiKey + '/alerts/q/' + location +     '.json';

window['wCallback_3'] = function(data) {
// Get any weather alerts
var info = data.alerts; 
// Warning level and color
$('#wWarning .wLevel').append('<TD>' + info.wtype_meteoalarm + '</TD>');
$('#wWarning .wColor').append('<TD>' + info.level_meteoalarm_name + '</TD>');

};

// Callback
$.ajax({
url: url,
dataType: 'jsonp',
contentType: "application/json",
cache: true, 
jsonpCallback: 'wCallback_3'
});

});

HTML

<div id="wWarning">

<table class="wBox">  
<h1 class="wLevel"></h1>
<h1 class="wColor"></h1>  
</table>

</div>

コードを実行すると、データが UNDEFINED として表示されます。正しいデータを返さないのはなぜですか?

4

1 に答える 1

0

「未定義」は、リクエストの一部として存在しないため、コールバック関数を参照しています。

次の行で、出力を JSONP にすることを伝えています。

dataType: 'jsonp',

しかし、その API は JSON で応答しています (コールバックを除く)。

JSONP (探しているものに適したプロトコル) を使用してクロスドメインにアクセスするには、AutoComplete API を使用する必要があります。

http://www.wunderground.com/weather/api/d/docs?d=autocomplete-api&MR=1

次に、GET 文字列で cb=myCallback を使用してコールバックを設定します。

http://autocomplete.wunderground.com/aq?format=JSON&query=Anchorage&cb=myCallback

問題は、その API で zmw= 値を使用する方法が見当たらないことです。そのため、関心のある領域の回避策が必要になる場合があります。

于 2013-04-26T20:15:46.860 に答える