recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Utiliser JSONP pour récupérer de la musique QQ indique toujours que la fonction de rappel n'est pas définie

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...

怪我咯怪我咯2747 Il y a quelques jours1170

répondre à tous(1)je répondrai

  • 黄舟

    黄舟2017-07-05 10:48:24

    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

    répondre
    0
  • Annulerrépondre