javascript - 用jsonp抓取qq音乐总是说回调函数没有定义
问题描述
用jsonp抓取qq音乐总是说回调函数没有定义,
我的要实现时候的步骤1。第一步
我要实现的目的
问题:如题
我的部分代码:
import originJSONP from ’jsonp’export default function (url, data, option) { url += (url.indexOf(’?’) < 0 ? ’?’ : ’&’) + param(data) return new Promise((resolve, reject) => { originJSONP(url, option, (err, data) => { if (!err) {resolve(data) } else {reject(err) } }) })}// 将 data 拼接到 url 上function param(data) { let url = ’’ for (let i in data) { let value = data[i] !== undefined ? data[i] : ’’ url += `&${i}=${encodeURIComponent(value)}` } return url}// 热门歌单详情歌曲export function getHotSongList(disstid) { const url = ’https://c.y.qq.com/qzone/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg’ const data = Object.assign({}, commonParam, { type: 1, json: 1, utf8: 1, onlysong: 0, disstid, // jsonpCallback: ’playlistinfoCallback’, loginUin: 0, hostUin: 0, inCharset: ’utf8’, platform: ’yqq’, needNewCode: 0 }) return jsonp(url, data, options)}// this.disc.dissid我已经正确获取了,通过自己服务端代理,代码太多就不贴了。 // TODO 报错ReferenceError: jp1() is not defined getHotSongList(this.disc.dissid).then((res) => { if (res.code === ERR_OK) { // 问题 不能打印出来console.log(res.cdlist[0].songlist) } })
不知道为甚么,折腾一天了,还是没解决,是QQ音乐的接口变了吗,(前两天同样的代码还能正常运行的,昨天就不行了),希望有大神帮忙看看是怎么回事,先谢谢大家了。
补充回调函数的名称里边处理好了,对其他接口(歌曲图片,歌手,都是用jsonp获取没有问题),_jp1是一个默认名称而已。请求第二个它就变成_jp2,如此类推
处理的部分代码
// 库它自己定义的名字var prefix = opts.prefix || ’__jp’; // use the callback name that was passed if one was provided. // otherwise generate a unique name by incrementing our counter. var id = opts.name || (prefix + (count++));
该库的地址:https://github.com/webmodules...
问题解答
回答1:你有定义过jp1函数么?没有的话是怎么成功的呢?建议看看jsonp的原理
相关文章:
1. python相关问题求解决,有偿2. javascript - input输入框触发change事件后,外部元素会被选中3. python - 用__call__ 实现装饰器功能4. javascript - vue2.0中router.repalce跟router.push有什么区别,二者的应用场景是会有怎样的区别?5. javascript - prismplayer播放器全屏问题6. javascript - 在sublime中如何给.vue文件注释?7. python - 请问用cxfreeze打包的可执行程序能反编译出源码么?8. HTML5怎么访问本地文件?9. javascript - 这种上传图片预览怎么做?10. javascript - 把字符串日期转换成一般时间格式后,发现小于10的数字不会自动添加0在前面,如下