vue使用jsonp抓取qq音乐数据的方法


Posted in Javascript onJune 21, 2018

1、安装jsonp

npm install jsonp

2、创建jsonp.js文件,内容如下:

import originJSONP from 'jsonp'
/** * 封装jsonp
 * @param {*} url 原始的jsonp第一个参数是url,第二个参数是option,这里为了比较好写参数做了下封装
 * @param {obj} data 参数
 * @param {*} option jsonp的option
 */
export default function jsonp (url, data, option) {
 // 如果url没有?就加一个?拼接
 url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
 return new Promise((resolve, reject) => {
  // 原始jsonp的三个参数,url、option、回调函数
  originJSONP(url, option, (err, data) => {
   // 类似node的设计,如果err是null,表示成功,data是后端返回的数据
   if (!err) {
    resolve(data)
   } else {
    reject(err)
   }
  })
 })
}
export function param (data) {
 let url = ''
 for (var k in data) {
  let value = data[k] !== undefined ? data[k] : ''
  url += '&' + k + '=' + encodeURIComponent(value)
 }
 return url ? url.substring(1) : ''
}

3、创建confiig.js文件,内容如下:

// 用于存放公共数据
export const commonParams = {
 g_tk: 5381,
 format: 'json',
 inCharset: 'utf - 8',
 outCharset: 'utf - 8',
 notice: 0
}
export const options = {
 param: 'jsonpCallback'
}
export const ERR_OK = 0

3、创建recommend.js文件,内容如下:

import jsonp from './jsonp'
import { commonParams, options } from './config'
export function getRecommend () {
 const url = 'https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg'
 const data = Object.assign({}, commonParams, {
  platform: 'h5', uin: 0, needNewCode: 1
 })
 // 这里返回一个promise对象
 return jsonp(url, data, options)
}

4、在组件中使用,如musicHall.vue中

<script>
import {getRecommend} from '../api/recommend.js'
import {ERR_OK} from '../api/config.js'
export default {
 mounted () {
  //在created中也可
  this._getRecommend()
 },
 methods: {
  _getRecommend () {
   getRecommend().then((res) => {
    if (res.code === ERR_OK) {
     console.log(res.data.slider)
    }
   })
  }
 }
}
</script>

5、总结

  • Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)
  • Object.assign(target, source1, source2)
  • encodeURIComponent(URIstring)函数可把字符串作为 URI 组件进行编码。 URIstring 必需。一个字符串,含有 URI 组件或其他要编码的文本。
  • substring()方法用于提取字符串中介于两个指定下标之间的字符。
  • stringObject.substring(start,stop)包括 start 处的字符,但不包括 stop 处的字符。不接受负的参数。

总结

以上所述是小编给大家介绍的vue使用jsonp抓取qq音乐数据的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS的递增/递减运算符和带操作的赋值运算符的等价式
Dec 08 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
Jan 06 Javascript
JavaScript的Module模式编程深入分析
Aug 13 Javascript
js实现同一页面多个不同运动效果的方法
Apr 10 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
Aug 13 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
Apr 29 Javascript
jquery常用的12个小功能
Jul 22 Javascript
AngularJS入门教程之数据绑定原理详解
Nov 02 Javascript
BootStrap中的Fontawesome 图标
May 25 Javascript
深入了解javascript 数组的sort方法
Jun 01 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
Sep 15 Javascript
js实现简单选项卡制作
Aug 05 Javascript
Vue 获取数组键名的方法
Jun 21 #Javascript
Taro集成Redux快速上手的方法示例
Jun 21 #Javascript
vue2.0项目实现路由跳转的方法详解
Jun 21 #Javascript
JS实现快递单打印功能【推荐】
Jun 21 #Javascript
详解javascript中的babel到底是什么
Jun 21 #Javascript
webpack打包react项目的实现方法
Jun 21 #Javascript
Vue Router的懒加载路径的解决方法
Jun 21 #Javascript
You might like
php设计模式  Command(命令模式)
2011/06/17 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
php上传图片类及用法示例
2016/05/11 PHP
php简单压缩css样式示例
2016/09/22 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
js常用DOM方法详解
2017/02/04 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
python使用win32com库播放mp3文件的方法
2015/05/30 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
蛋白质世界:Protein World
2017/11/23 全球购物
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
J2EE相关知识面试题
2013/08/26 面试题
农业大学毕业生的个人自我评价
2013/10/11 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
外联部演讲稿
2014/05/24 职场文书
小学生家长意见
2015/06/03 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
检讨书格式
2019/04/25 职场文书
2019年大学推荐信
2019/06/24 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
Win11查看设备管理器
2022/04/19 数码科技