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 相关文章推荐
再探JavaScript作用域
Sep 24 Javascript
基于jQuery实现最基本的淡入淡出效果实例
Feb 02 Javascript
简单介绍JavaScript的变量和数据类型
Jun 03 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
javascript如何实现360度全景照片问题汇总
Apr 04 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
Dec 26 Javascript
关于vuex的学习实践笔记
Apr 05 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
Apr 12 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
Vue中使用vee-validate表单验证的方法
May 09 Javascript
ES6函数和数组用法实例分析
May 23 Javascript
基于vue实现微博三方登录流程解析
Nov 04 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/07/27 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
php-app开发接口加密详解
2018/04/18 PHP
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
layui使用label标签的方法
2019/09/14 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
使用Vue实现一个树组件的示例
2020/11/06 Javascript
详解Django之auth模块(用户认证)
2018/04/17 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Django  ORM 练习题及答案
2019/07/19 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
高级工程师岗位职责
2013/12/15 职场文书
绿色环保标语
2014/06/12 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
2014年底工作总结
2014/12/15 职场文书
医院消毒隔离制度
2015/08/05 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers