cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Menggunakan jsonp untuk merebut muzik qq sentiasa mengatakan bahawa fungsi panggil balik tidak ditakrifkan

Menggunakan jsonp untuk menangkap muzik qq sentiasa mengatakan bahawa fungsi panggil balik tidak ditentukan,

Langkah saya untuk mencapainya
1. Langkah pertama

Apa yang saya ingin capai

Soalan: Sama seperti tajuk

Sebahagian daripada kod saya:

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

Saya tidak tahu mengapa saya telah bergelut selama sehari dan masih belum menyelesaikannya Adakah antara muka Muzik QQ telah berubah (Kod yang sama masih berjalan seperti biasa dua hari lalu, tetapi tidak semalam). harap seseorang boleh membantu saya mengetahui apa yang berlaku Baiklah, terima kasih terlebih dahulu.

Ditambah
Nama fungsi panggil balik telah diproses Untuk antara muka lain (gambar lagu, penyanyi, semua boleh diperolehi menggunakan jsonp tanpa sebarang masalah), _jp1 hanyalah nama lalai. Minta yang kedua dan ia menjadi _jp2, dan seterusnya

Sebahagian daripada kod yang diproses

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

Alamat perpustakaan: https://github.com/webmodules...

怪我咯怪我咯2728 hari yang lalu1157

membalas semua(1)saya akan balas

  • 黄舟

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

    Adakah anda mentakrifkan fungsi jp1? Bagaimana ia boleh berjaya jika tidak?
    Adalah disyorkan untuk melihat prinsip jsonp

    balas
    0
  • Batalbalas