jquery调用网易云音乐API遇到,网易音乐接口需要用node启动
前端js调用代码
var thisUrl="http://127.0.0.1:3000/album?id=32311";
$.ajax({
type:"get",
url:thisUrl,
async:true,
dataType:"jsonp",
success:function(musicData){
var data=JSON.parse(musicData)
console.log(data)
},
error:function(err){
console.log(err)
}
});
控制台错误提示:Uncaught SyntaxError: Unexpected token :
怎么看代码都没毛病啊!!哪里出的错!!!?
聪明的我马上查百度,发现百度并没有什么类似的情况。自己解决半天,并没有什么进展。
原因:由于后台直接将json数据send过来,而json数据是不能跨域的,只能以jsonp的形式进行跨域,造成前端无法直接获取数据。
解决办法:这时候我们要将json数据放到一个对象中了,并以字符串的形式send给客户端
const express = require("express")
const router = express()
const { createRequest } = require("../util/util")
router.get("/", (req, res) => {
const id = req.query.id
createRequest(`/api/album/${id}`, 'GET', null)
.then(result => {
res.setHeader("Content-Type", "application/json");
console.dir(result);
var obj = "callback({'data':"+result+"})";//这里是将数据放入callback中
res.send(obj)
})
.catch(err => {
res.status(502).send('fetch error')
})
})
module.exports = router
结果:不贴图了。
最后放个网易云音乐API地址:https://binaryify.github.io/NeteaseCloudMusicApi/#/