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 bottle跑起來以后,定時執行的任務為什么每次都重復(多)執行一次?2. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題3. html5 - HTML代碼中的文字亂碼是怎么回事?4. 視頻文件不能播放,怎么辦?5. javascript - vue2如何獲取v-model變量名6. javascript - 求幫助 , ATOM不顯示界面!!!!7. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處8. javascript - 為什么在谷歌控制臺 輸出1的時候,輸出的1立馬就不見了9. javascript - angular使從elastichearch中取出的文本高亮顯示,如圖所示10. javascript - ios返回不執行js怎么解決?
