javascript - Die Verwendung von JSONP zum Abrufen von QQ-Musik zeigt immer an, dass die Rückruffunktion nicht definiert ist
怪我咯
怪我咯 2017-07-05 10:46:24
0
1
1040

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

怪我咯
怪我咯

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

Antworte allen(1)
黄舟

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!