从请求返回到Last.FM API的文件出错

时间:2010-07-16 12:02:17

标签: jquery json api last.fm

我正在使用带有jquery的Last.fm API,如下所示:

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

我在Firebug中收到以下错误:

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

单击该错误会将我带到从请求返回的文件中。错误发生在第2行(实际上有更多的轨道对象,但我只包含一个用于长度):

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

因此错误在返回的文件中,我该如何处理?谢谢你的阅读。

1 个答案:

答案 0 :(得分:3)

这里有一些问题。

首先,我认为您在请求网址末尾的JSONCallback=?参数应该只是callback=?。虽然令人困惑的是jQuery docs在示例代码中显示了您的方式,但在主体文本中却没有...

另一件事是你正在使用getJSON方法,而Last.fm API正在返回XML,所以jQuery试图将返回的XML解析为JSON,这显然是做不到的。

因此,您需要指定您希望将JSON作为响应返回 - 这似乎有效:

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

您将能够在Firebug控制台中看到返回的JSON对象并检查它以查看您要使用的数据。希望这有帮助!