Menggunakan jsonp untuk menangkap muzik qq sentiasa mengatakan bahawa fungsi panggil balik tidak ditentukan,
Langkah saya untuk mencapainya
1. Langkah pertama
Apa yang saya ingin capai
Soalan: Sama seperti tajuk
Sebahagian daripada kod saya:
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)
}
})
Saya tidak tahu mengapa saya telah bergelut selama sehari dan masih belum menyelesaikannya Adakah antara muka Muzik QQ telah berubah (Kod yang sama masih berjalan seperti biasa dua hari lalu, tetapi tidak semalam). harap seseorang boleh membantu saya mengetahui apa yang berlaku Baiklah, terima kasih terlebih dahulu.
Ditambah
Nama fungsi panggil balik telah diproses Untuk antara muka lain (gambar lagu, penyanyi, semua boleh diperolehi menggunakan jsonp tanpa sebarang masalah), _jp1 hanyalah nama lalai. Minta yang kedua dan ia menjadi _jp2, dan seterusnya
Sebahagian daripada kod yang diproses
// 库它自己定义的名字
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++));
Alamat perpustakaan: https://github.com/webmodules...
Adakah anda mentakrifkan fungsi jp1? Bagaimana ia boleh berjaya jika tidak?
Adalah disyorkan untuk melihat prinsip jsonp