suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Die Verwendung von JSONP zum Abrufen von QQ-Musik zeigt immer an, dass die Rückruffunktion nicht definiert ist

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

怪我咯怪我咯2728 Tage vor1155

Antworte allen(1)Ich werde antworten

  • 黄舟

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

    你有定义过jp1函数么?没有的话是怎么成功的呢?
    建议看看jsonp的原理

    Antwort
    0
  • StornierenAntwort