2011-02-24 15 views
5

Recientemente he cambiado el diseño de mi sitio y ahora necesito usar solicitudes dinámicas de AJAX para mis datos. Básicamente, estoy tratando de recuperar datos de usuario utilizando la API Last.FM en formato JSON.

Soy nuevo en esto, particularmente JSON, y me está dando un poco de dolor de cabeza. Sé que debo estar perdiendo algo simple.

Aquí hay un código muy básico para probar la funcionalidad ¡pero no está recuperando nada!

<html> 
<head> 
    <script src="./jquery/jquery-1.4.4.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 

$(document).ready(function() { 
    $.getJSON("http://ws.audioscrobbler.com/2.0/?method=user.getTopArtists&user=test&api_key=690e1ed3bc00bc91804cd8f7fe5ed6d4&limit=5&format=json&callback=?", function(data) { 
     $.each(data.topartists.artist, function(i,item){ 
      html += "<p>" + item.name + " - " + item.playcount + "</p>";  
     }); 
     $('#test').append(html); 
    }); 
}); 
</script> 

<div id="test"></div> 

</body></html> 

¿Alguna sugerencia?

Me gustaría poder utilizar el objeto JSON en toda la página, así que, por ejemplo, en cualquier momento puedo llamar a topartists.artist [i] .playcount; para mostrar la cuenta de juego, etc. ¿Cómo puedo hacer esto?

+0

http://jsfiddle.net/eSv9x/ – Val

Respuesta

3

La variable html debe declararse fuera del alcance de la each:

//var topArt; 
$(document).ready(function() { 
    $.getJSON("http://ws.audioscrobbler.com/2.0/?method=user.getTopArtists&user=test&api_key=690e1ed3bc00bc91804cd8f7fe5ed6d4&limit=5&format=json&callback=?", function(data) { 
     var html = ''; 
     $.each(data.topartists.artist, function(i, item) { 
      html += "<p>" + item.name + " - " + item.playcount + "</p>"; 
     }); 
     $('#test').append(html); 
     // topArt = data.topartists; 
    }); 
}); 

En cuanto a su segunda pregunta, necesitará una variable global. Puede ponerlo antes de $(document).ready() (como se muestra en el comentario) y estará accesible en todas partes.

+0

Gracias Val - Sabía que sería algo simple, pero fue vergonzoso :) – walden

0

He intentado lo siguiente URL lo que está utilizando "http://ws.audioscrobbler.com/2.0/?method=user.getTopArtists & usuario = prueba & api_key = 690e1ed3bc00bc91804cd8f7fe5ed6d4 & límite = 5 = & formato JSON & callback =? "

Da json no-bien formada pero si uso siguiente URL "http://ws.audioscrobbler.com/2.0/?method=user.getTopArtists & user = prueba & api_key = 690e1ed3bc00bc91804cd8f7fe5ed6d4 & límite = 5 & format = json "

Obtuve el JSON correcto.

También deberá declarar html como respuesta dada anteriormente.

Cuestiones relacionadas