使用Soundcloud API时出现“未捕获的ReferenceError”

时间:2013-03-12 04:18:47

标签: javascript soundcloud

我正在尝试使用Javascript使用网站的API在Soundcloud上搜索曲目。我创建了一个页面test.html,其中包含以下代码(已删除客户端ID):

<html>
<head>
<script src="http://connect.soundcloud.com/sdk.js">
function findMusicByTag(tag)
{
SC.initialize({
    client_id: 'MY_CLIENT_ID'
});
SC.get('/tracks',{tags:\"tag\"},
    function(tracks)
    {
        console.log(tracks);
    });
}
</script>
</head>
<body onload="findMusicByTag('hitech')">
</body>
</html> 

当我在Chrome中加载页面时,请转到控制台,我看到此错误:

Uncaught ReferenceError: findMusicByTag is not defined         test.html:17

我定义findMusicByTag()的方式有什么问题?

2 个答案:

答案 0 :(得分:3)

您应该将<script>标记分成两个:

<script type="text/javascript" src="http://connect.soundcloud.com/sdk.js"></script>
<script type="text/javascript">
function findMusicByTag(tag)
{
    SC.initialize({
        client_id: 'MY_CLIENT_ID'
    });
    SC.get('/tracks',{tags:tag},
        function(tracks)
        {
            console.log(tracks);
    });
}
</script>

正如MDN所述:

  

<强> SRC

     

此属性指定外部脚本的URI;这可以用作直接在脚本中嵌入脚本的替代方法   文献。指定了script属性的 src元素不应该   在其标签中嵌入了一个脚本

修改:删除了反斜杠并在{tags:tag}附近加了双引号。

答案 1 :(得分:1)

除了分离脚本标记外,还需要删除/“around标记

<html>
<head>
<script src="http://connect.soundcloud.com/sdk.js">
</script>
<script type="text/javascript">
function findMusicByTag(tag)
{
SC.initialize({
    client_id: 'your id'
});
SC.get('/tracks',{tags: tag},
    function(tracks)
    {
        console.log(tracks);
    });
}
</script>
</head>
<body onload="findMusicByTag('hitech')">
</body>
</html>