Получение данных из файлов JSON
Я пытаюсь использовать JSON-функцию JQuery для получения данных о барометрическом давлении с веб-сайта.
Во-первых, я использовал Yahoo! Трубы для преобразования данных XML в JSON. Затем я попытался получить и использовать эти данные в предупреждении, но это не сработало. В этом JSFiddle у меня есть простой рабочий пример, но когда я пытаюсь использовать более продвинутый файл JSON, он не работает.
Смотрите также эту статью IBM.
2 ответа
Проблемы в вашем коде
- Вы забыли включить
http://
в вашей ссылке
Вы должны попробовать это (см. alert
, Это предупредит название)
<div onClick="$.getJSON('http://pipes.yahoo.com/pipes/pipe.run?_id=467a55b506ba06b9ca364b1403880b65&_render=json&textinput1=40.78158&textinput2=-73.96648&_callback=?', function(data){alert(data.value.title)})">Click Me</div><!--I can't get this to work-->
Но лучше использовать как следующее:
<div class="loadjson">Click Me</div>
function barometer() {
$.getJSON('http://pipes.yahoo.com/pipes/pipe.run?_id=467a55b506ba06b9ca364b1403880b65&_render=json&textinput1=40.78158&textinput2=-73.96648&_callback=?', function(data) {
alert(data.value.title);
})
}
$('div.loadjson').on('click', function() {
barometer();
});
Замечания: $.getJSON()
возвращает два parameters
в data
объект.
- 1st one is `count` that have integer value
- 2nd one is `value`, which is an `Object`.
Чтобы получить второй параметр, вам нужно использовать data.value
,
Было много много много проблем с кодом, я исправил его и прокомментировал встроенные проблемы...
jsfiddle здесь: http://jsfiddle.net/kritzikratzi/LQcVd/
function loadBarometerData(){
// 1. it's not generally bad practice to put stuff in the
// onClick listeners, but really... don't put such long code there! it's not readable ...
// 2. you were missing a "http://" and it was downloading
// jsfiddle.net/pipes.yahoo.com/....
// 3. getJSON doesn't return a result immediately, you need to use callbacks for that!!
$.getJSON('http://pipes.yahoo.com/pipes/pipe.run?_id=467a55b506ba06b9ca364b1403880b65&_render=json&textinput1=40.78158&textinput2=-73.96648&_callback=?' ).success( barometer );
};
function barometer(data) {
console.log( data );
// 4. you had items instead of items[0]
// similar with data.
alert(data.value.items[0].data[1].parameters.pressure.value);
};
function showPrice(data) {
alert("Symbol: " + data.symbol[0] + ", Price: " + data.price);
}