Heim > Fragen und Antworten > Hauptteil
Die Verwendung von JSONP zum Aufnehmen von QQ-Musik zeigt immer an, dass die Rückruffunktion nicht definiert ist,
Meine Schritte, um es zu erreichen
1. Erster Schritt
Was ich erreichen möchte
Frage: Identisch mit dem Titel
Teil meines Codes:
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)
}
})
Ich weiß nicht, warum. Ich habe seit einem Tag Probleme und habe es immer noch nicht gelöst. (Derselbe Code lief vor zwei Tagen noch normal.) Ich hoffe, jemand kann mir helfen, herauszufinden, was passiert ist. Vielen Dank im Voraus.
Hinzugefügt
Der Name der Rückruffunktion wurde verarbeitet (Liedbilder, Sänger, alle können problemlos mit jsonp abgerufen werden), _jp1 ist nur ein Standardname. Fordern Sie das zweite an und es wird zu _jp2 und so weiter
Ein Teil des Codes wurde verarbeitet
// 库它自己定义的名字
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++));
Die Adresse der Bibliothek: https://github.com/webmodules...