Создание / доступ к объекту JSON с использованием jQuery $ .ajax с API Last.FM - PullRequest
5 голосов
/ 24 февраля 2011

Я недавно изменил дизайн своего сайта, и теперь мне нужно использовать динамические запросы AJAX для моих данных. По сути, я пытаюсь получить пользовательские данные с помощью API Last.FM в формате JSON.

Я новичок в этом, особенно JSON, и это доставляет мне немного головной боли! Я знаю, что, должно быть, упускаю что-то простое.

Вот очень простой код для проверки функциональности, но он ничего не извлекает!

<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>

Есть предложения?

Я хотел бы иметь возможность использовать объект JSON по всей странице, поэтому, например, в любое время я могу просто вызвать topartists.artist [i] .playcount; отображать счетчик воспроизведения и т. д. Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 24 февраля 2011

html-переменная должна быть объявлена ​​вне области действия 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;
    });
});

Что касается вашего второго вопроса, вам понадобится глобальная переменная.Вы можете поставить его до $(document).ready() (как показано в комментарии), и он будет доступен везде.

0 голосов
/ 24 февраля 2011

Я попробовал следующий URL-адрес, который вы используете: "http://ws.audioscrobbler.com/2.0/?method=user.getTopArtists&user=test&api_key=690e1ed3bc00bc91804cd8f7fe5ed6d4&limit=5&format=json&callback=?"

Это дает не правильно сформированный JSON, но если я использую следующий URL-адрес" http://ws.audioscrobbler.com/2.0/?method=user.getTopArtists&user=test&api_key=690e1ed3bc00bc91804cd8f7fe5ed6d4&limit=5&format=json"

, я получил правильный JSON.

Также вам нужно будет объявить html как ответ, приведенный выше.

...