js回调函数报错Uncaught SyntaxError: Unexpected token :

2016/12 01 14:12
此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于www.ca788.com的点点滴滴

在用网易云音乐API盘诘歌曲信息时,可以告成,获取到歌曲id后想用异样的办法获取歌词,但是就报错了,script中的src在地点栏中可以直接前往json数据,但是经过回调函数打印,却报错。
相干js

// 搜刮歌词
    var searchLyricBtn = document.getElementByIdsearch-lyric-btn;
    searchLyricBtn.addEventListenerclick, function  {
        var musicId = result.getAttributedata-id;
        
        console.logmusicId;
        var url = "http://music.163.com/api/song/lyric";
        var data = {
            "id": musicId,
            "lv": -1,
            "kv": -1,
            "tv": -1,
            "callback": "jsonplyriccallback"
        }
        var buffer = [];
        for var key in data {
            buffer.pushkey + = + encodeURIComponentdata[key];
        }
        var fullpath = url + "?os=pc&" + buffer.join&;
        CreateScriptfullpath;

    };
    function CreateScript src {
        var el = document.createElementscript;
        el.src = src;
        el.async = true;
        el.defer = true;
        document.body.appendChildel;
    };
    // 歌词搜刮回调
    function jsonplyriccallback rs {    
        console.log回调告成;    
    };

对json和jsonp的回调款式不是很明晰。
测试id可以用287035 歌曲《遇见》的
测试src直接地点栏方式前往

告成的歌曲的src直接地点栏方式前往

貌似后面这个主动多了一个回调函数包装。
求大神解答~。

颠末测试,这个链接:
http://music.163.com/api/song/lyric?os=pc&id=287035&lv=-1&kv=-1&tv=-1&callback=jsonplyriccallback
&callback=jsonplyriccallback 应该是你自己加上去的吧。

由于 http://music.163.com/api/song/lyric 所对应的背景的效力器端脚本 只是单纯的输入,并不支持回调(或许你不知道他的回调的api称号,款式)。

由于是单纯的输入字符串,以是,凡是运用 script 的 src 标签来加载,都市报错的,由于如许做:

<script src=http://music.163.com/api/song/lyric?os=pc&id=287035&lv=-1&kv=-1&tv=-1&callback=jsonplyriccallback`
中 `&callback=jsonplyriccallback></script>

等src加载终了后,效力端输入的字符串会直接写入script标签中,等价于:

<script src=http://music.163.com/api/song/lyric?os=pc&id=287035&lv=-1&kv=-1&tv=-1&callback=jsonplyriccallback`
中 `&callback=jsonplyriccallback>
{"sgc":true,"sfy":false,"qfy":false,"lrc":{"version":17,"lyric":"[00:00.00] 作曲 :....}
</script>

以是才会报错。

若想处理这个题目,如果 你会 php 的话,用 curl 来模仿央求,来后自己写一个复杂的控制脚本,其他范例的效力器言语我不会,就给个php的典范吧:

如:

server.php:
$curl = curl_init;
$url = $_GET[url];
curl_setopt$curl , CURLOPT_URL , $url;
curl_setopt$curl , CURLOPT_RETURNTRANSFER , true;
$rel = curl_exec$curl;
curl_close$curl;
print_r$rel;

front.js:
var path = server.php;
var queryString = url=http://music.163.com/api/song/lyric?os=pc&id=287035&lv=-1&kv=-1&tv=-1;
var xhr = new XMLHttpRequest;
   xhr.openpath , queryString , true;
   xhr.onreadystatechange = function{
     if this.readyState === 4 && this.status === 200 {
       console.log抓取到的数据: , xhr.responseText;
     }
   }
   xhr.sendnull;

你要定义一个名为 jsonpmusiccallback 的回调函数

我想问下如许做网易知道了会禁用么?

(看完/读完)这篇文章有何感想! 来看看www.ca788.com是怎么评论的吧!

--转载请注明: www.ca788.com#亚洲城ca788手机版官网 » js回调函数报错Uncaught SyntaxError: Unexpected token :

发表评论

(必填)