首页 > 编程知识 正文

ajax跨域的解决办法,ajax 跨域请求api

时间:2023-05-06 05:45:49 阅读:272105 作者:3930

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/#/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。