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 相关文章推荐
NiftyCube——轻松实现圆角边框
Feb 20 Javascript
Sample script that deletes a SQL Server database
Jun 16 Javascript
javascript测试题练习代码
Oct 10 Javascript
Javascript实现滚动图片新闻的实例代码
Nov 27 Javascript
js图片跟随鼠标移动代码
Nov 26 Javascript
通过扫描二维码打开app的实现代码
Nov 10 Javascript
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
微信小程序 image组件遇到的问题
May 28 Javascript
如何测量vue应用运行时的性能
Jun 21 Javascript
js实现课堂随机点名系统
Nov 21 Javascript
js实现星星海特效的示例
Sep 28 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实现的通用图片处理类
2015/03/24 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
selenium+python实现自动化登录的方法
2018/09/04 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
建筑设计学生的自我评价
2014/01/16 职场文书
《荷花》教学反思
2014/04/16 职场文书
三年级学生期末评语
2014/12/26 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server