2015-07-14 4 views
0

Я застрял в извлечении данных json в гальке.извлечение данных json в pebbleJS

var UI = require('ui'); 
var ajax = require('ajax'); 

var URL="http://ws.audioscrobbler.com/2.0/?method=user.getTopArtists&user=test&api_key=4a9f5581a9cdf20a699f540ac52a95c9&limit=10&format=json&callback=?"; 
var card = new UI.Card({ 
    title:'last.fm stat', 
    subtitle:'Fetching...' 
}); 
card.show(); 

ajax({ url: URL }, function(data){ 
    var topArtist=data.topartists[0].artist.name; 
    card.subtitle(topArtist); 
}); 

Вот ошибка я получаю:

[INFO] ocess_manager.c:368: Heap Usage for App <lastfm sta: Total Size <48584B> Used <6256B> Still allocated <28B> 
[PHONE] pebble-app.js:?: (+) [card 1] : [card 1] 

[PHONE] pebble-app.js:?: JavaScript Error: 
TypeError: Cannot read property '0' of undefined 
    at pebble-js-app.js:123:32 
    at pebble-js-app.js:871:17 
    at req.onreadystatechange (lib/ajax.js:11 

4: 9)

ответ

3

Вечерний Mona,

  1. Удалите знак вопроса в конце URL.

  2. Удалите инструкцию card.show(), где вы ее положили, и поместите ее после добавления к ней субтитров.

  3. Укажите, что вы имеете дело с типом данных JSON.

И ваш окончательный код должен выглядеть следующим образом:

var UI = require('ui'); 
var ajax = require('ajax'); 

var URL="http://ws.audioscrobbler.com/2.0/?method=user.getTopArtists&user=test&api_key=4a9f5581a9cdf20a699f540ac52a95c9&limit=10&format=json&callback="; 
var card = new UI.Card({ 
    title:'last.fm stat', 
    subtitle:'Fetching...' 
}); 

ajax({ url: URL, type: 'json' }, function(data) { 
    var topArtist = data.topartists.artist[0].name; 
    card.subtitle(topArtist); 
    card.show(); 
}); 

Он должен теперь работать отлично. :)

Кроме того, следует добавить отказ обратного вызова в вашем АЯКС метода:

ajax({object}, success, failure) 
+0

эй Arnaud, это правильно. Просто быстрая заметка, это должен быть var topArtist = data.topartists.artist [0] .name; в соответствии с 'http: // www.w3resource.com/API/last.fm/tutorial.php' можете ли вы изменить его в своем ответе, потому что я хочу принять ответ. Большое спасибо. P.S .: Можно ли вызвать getJSON в pebblejs? –

+1

Без проблем, все готово! Я не думаю, что вы можете, они разработали свои собственные методы - пока я помню, jQuery не включен. На данный момент вам нужно будет придерживаться объявления типа. :-) – Arnaud

+0

да, по-видимому, jQuery не требуется! Надеюсь, они добавят его в новые версии. –

Смежные вопросы