2

jQuery オートコンプリート ウィジェットを使用して、spotify API からトラックの「href」値を返そうとしています。これが私のコードです:

    $(function() {
    $("#spotify_song_search").autocomplete({
        source: function(request, response) {
            $.get("http://ws.spotify.com/search/1/track.json", {
                q: request.term
            }, function(data) {
                response($.map(data.tracks, function(el, ui) {
                    return el.name;
                }));
            });
        },
        select: function(el, ui) {
            alert(ui.item.href);
        }
    });
});​

応答する URL: http://ws.spotify.com/search/1/track.json?q=time

現在の状態では、アラートが発生し[object Object]ます。href 値を返すにはどうすればよいですか?

4

2 に答える 2

3

これが私が使用する例です。呼び出しでいくつかの値を返し、ページの他の場所で使用します

$("#SearchField").autocomplete({
    source: function (request, response) {
        var term = request.term;
        if (term in entityCache) {
            response(entityCache[term]);
            return;
        }
        if (entitiesXhr != null) {
            entitiesXhr.abort();
        }
        $.ajax({
            url: actionUrl,
            data: request,
            type: "GET",
            contentType: "application/json; charset=utf-8",
            timeout: 10000,
            dataType: "json",
            success: function (data) {
                response($.map(data, function (item) {
                    return { label: item.SchoolName, value: item.EntityName, id: item.EntityID, code: item.EntityCode };
                }));
            }
        });
    },
    minLength: 3,
    select: function (event, result) {
        $("#EntityID").val(result.item.id);
        $("#Code").val(result.item.code);
    }
});

キャッシュメカニズムもあります:-)

于 2012-06-10T04:00:28.010 に答える
3

これはどうですか: http://jsfiddle.net/MMPTC/

   $(function() {
    $("#spotify_song_search").autocomplete({
        source: function(request, response) {
            $.get("http://ws.spotify.com/search/1/track.json", {
                q: request.term
            }, function(data) {
                response($.map(data.tracks, function(item) {
                    return {label: item.name, track: item};
                }));
            });
        },
        select: function(el, ui) {
                console.log(ui);
            $("#track").attr("href",ui.item.track.href).text("Listen");
        }
    });
});​

<input type="text" id="spotify_song_search">
<a id='track'></a>​

PS この量のコードで、実際にトラックを検索して実際に再生できるという事実には、ただただ圧倒されました。インターネットは...素晴らしいです。:)

于 2012-06-10T03:57:19.113 に答える