javascript - Utiliser JSONP pour récupérer de la musique QQ indique toujours que la fonction de rappel n'est pas définie
怪我咯
怪我咯 2017-07-05 10:46:24
0
1
1124

Utiliser jsonp pour capturer de la musique qq indique toujours que la fonction de rappel n'est pas définie,

Mes étapes pour y parvenir
1. Première étape

Ce que je veux réaliser

Question : Identique au titre

Une partie de mon code :

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)
      }
    })

Je ne sais pas pourquoi. J'ai du mal depuis un jour et je n'ai toujours pas résolu le problème. L'interface de QQ Music a-t-elle changé (le même code fonctionnait toujours normalement il y a deux jours, mais pas hier). j'espère que quelqu'un pourra m'aider à découvrir ce qui s'est passé. Merci à tous d'avance.

Ajouté
Le nom de la fonction de rappel a été traité Pour les autres interfaces (images de chansons, chanteurs, tout peut être obtenu en utilisant jsonp sans aucun problème), _jp1 est juste un nom par défaut. Demandez le deuxième et il devient _jp2, et ainsi de suite

Partie du code traité

// 库它自己定义的名字
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++));

L'adresse de la bibliothèque : https://github.com/webmodules...

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(1)
黄舟

Avez-vous défini la fonction jp1 ? Comment cela pourrait-il réussir sinon ?
Il est recommandé de jeter un œil au principe de jsonp

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal