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代码
Mar 10 Javascript
AJAX架构之Dojo篇
Apr 10 Javascript
再JavaScript的jQuery库中编写动画效果的指南
Aug 13 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
javascript 中的 delete及delete运算符
Nov 15 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
Aug 26 Javascript
AngularJs 常用的过滤器
May 15 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
微信小程序城市选择及搜索功能的方法
Mar 22 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
Feb 24 Javascript
vue中父子组件的参数传递和应用示例
Jan 04 Vue.js
JavaScript实现跟随鼠标移动的盒子
Jan 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网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Python构建XML树结构的方法示例
2017/06/30 Python
Python内置模块turtle绘图详解
2017/12/09 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
Python matplotlib实时画图案例
2020/04/23 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
大学毕业自我评价
2014/02/02 职场文书
自荐信的基本格式
2014/02/22 职场文书
车辆工程专业求职信
2014/06/14 职场文书
关爱残疾人标语
2014/06/25 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电
MySQL中order by的执行过程
2022/06/05 MySQL