2013-04-26 1 views
0

Я создал функцию и обратный вызов для получения некоторых данных о погодных предупреждениях. По какой-то причине данные возвращаются как «НЕ УКАЗАНО». Я собираю данные через json, хотя я бы предпочел ... получить XML и обратный вызов json, однако fetch и return json в порядке.Запрос Json возвращается «НЕ УКАЗАН» с использованием Wunderground API

Ниже мой код, но я поставил его в 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> 

Когда я запускаю код он отображает данные как неопределенные. Почему он не перенаправляет правильные данные?

ответ

0

«НЕ УКАЗАНО» относится к функции обратного вызова, поскольку она не существует как часть запроса.

Вы говорите это, что вы хотите, чтобы вывод, что в JSONP в строке:

dataType: 'jsonp', 

Но что API реагирует с JSON (за исключением обратного вызова).

Для того, чтобы получить доступ к этому междоменному с JSONP (который является правильным протокол для того, что вы ищете), вам нужно использовать автозаполнение API:

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

Затем вы устанавливаете Обратный вызов ХБ = myCallback в строке GET:

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

проблема заключается в том, я не вижу способа в том, что API для использования ZMW = значения, так что вам, возможно, потребуется обходной путь для области интерес.

+0

Привет, спасибо, что ответили. То, что я запрашиваю, - это функция оповещений в Европе http://www.wunderground.com/weather/api/d/docs?d=data/alerts. Я не вижу способа запросить это с помощью автозаполнения. Мой целевой пункт назначения уникален, поэтому, когда я помещаю имя вместо значения zmw, он возвращает те же данные. Есть ли другой способ сделать это? – ServerSideSkittles

+0

Ну, это не замечательное продолжение, но я нашел это: http://stackoverflow.com/questions/5584923/a-cors-post-request-works-from-plain-javascript-but-why-not- with-jquery Это похоже на php-решение, которое готовит запрос POST с заголовками, но предполагает, что сервер поддерживает запросы CORS. –