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宝典学习笔记(上)
Jan 10 Javascript
IE Firefox 使用自定义标签的区别
Oct 15 Javascript
Js如何判断客户端是PC还是手持设备简单分析
Nov 22 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
Mar 12 Javascript
Javascript字符串对象的常用方法简明版
Jun 26 Javascript
DOM基础教程之使用DOM控制表单
Jan 20 Javascript
jQuery实现跨域
Feb 03 Javascript
Jquery表单验证失败后不提交的解决方法
Oct 18 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
Feb 24 Javascript
Angular1.x复杂指令实例详解
Mar 01 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
javascript实现简易计算器功能
Sep 23 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 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
Python实现telnet服务器的方法
2015/07/10 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
Python文件操作的面试题
2013/06/22 面试题
档案管理员岗位职责
2013/12/01 职场文书
超越自我演讲稿
2014/05/21 职场文书
对照检查剖析材料
2014/09/30 职场文书
护士2015年终工作总结
2015/04/29 职场文书