2010-07-16 28 views
1

J'utilise l'API Last.fm avec jquery comme suit:erreur dans le fichier retourné d'une requête à l'API Last.FM

$.getJSON('http://ws.audioscrobbler.com/2.0/?JSONCallback=?', { 
    method: "user.getweeklytrackchart", 
    user: "rj", 
    api_key: "fb04ae401284be24afba0fbc2f4b0efb" 
}, function(data) { 
    // console.debug (data) 
}); 

Je reçois l'erreur suivante dans Firebug:

missing ; before statement 
[Break on this error] <lfm status="ok">\n 

En cliquant sur l'erreur, j'arrive au fichier qui est renvoyé par la requête. L'erreur se produit dans la ligne 2 (il y a effectivement beaucoup plus des objets de piste, mais je n'ai inclus une pour la longueur):

<?xml version="1.0" encoding="utf-8"?> 
<lfm status="ok"> 
    <weeklytrackchart user="RJ" from="1278244800" to="1278849600"> 
     <track rank="1"> 
      <artist mbid="309c62ba-7a22-4277-9f67-4a162526d18a">Beck</artist> 
      <name>Mixed Bizzness</name> 
      <mbid></mbid> 
      <playcount>2</playcount> 
      <image size="small">http://userserve-ak.last.fm/serve/34/442288.jpg</image> 
      <image size="medium">http://userserve-ak.last.fm/serve/64/442288.jpg</image> 
      <image size="large">http://userserve-ak.last.fm/serve/126/442288.jpg</image> 
      <url>www.last.fm/music/Beck/_/Mixed+Bizzness</url> 
     </track> 
    </weeklytrackchart> 
</lfm> 

Ainsi, l'erreur est dans le fichier retourné, comment puis-je y faire face ? Merci d'avoir lu.

Répondre

3

Il y a quelques erreurs ici. Tout d'abord, je pense que le paramètre JSONCallback=? que vous avez à la fin de l'URL de la demande doit être callback=?. Bien que le jQuery docs montrent confusément votre chemin dans l'exemple de code, mais pas dans le texte principal du corps ...

L'autre chose est que vous utilisez la méthode getJSON, tandis que l'API Last.fm retourne XML, donc jQuery est en train d'essayer d'analyser XML retourné comme JSON, ce qu'il ne peut évidemment pas faire.

Vous devez spécifier que vous souhaitez JSON retour en réponse-cela semble fonctionner:

$.getJSON('http://ws.audioscrobbler.com/2.0/?callback=?', { 
    method: "user.getweeklytrackchart", 
    user: "rj", 
    api_key: "fb04ae401284be24afba0fbc2f4b0efb", 
    format: "json" 
}, function(data) { 
    console.log(data); 
}); 

Vous serez en mesure de voir l'objet JSON retourné dans la console Firebug et d'examiner à voir les données que vous souhaitez utiliser. J'espère que cela t'aides!

+0

Cela fonctionne parfaitement! Merci beaucoup pour votre aide, je l'apprécie vraiment. – ben