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 用6N±1法求素数 实例教程
Oct 20 Javascript
jQuery中filter(),not(),split()使用方法
Jul 06 Javascript
javaScript如何处理从java后台返回的list
Apr 24 Javascript
jQuery树形下拉菜单特效代码分享
Aug 15 Javascript
很不错的两款Bootstrap Icon图标选择组件
Jan 28 Javascript
JavaScript重载函数实例剖析
May 13 Javascript
jquery通过name属性取值的简单实现方法
Jun 20 Javascript
Form表单按回车自动提交表单的实现方法
Nov 18 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
遍历json获得数据的几种方法小结
Jan 21 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
May 30 Javascript
使用layer弹窗和layui表单实现新增功能
Aug 09 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
smarty内置函数capture用法分析
2015/01/22 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
跟老齐学Python之for循环语句
2014/10/02 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Python读取键盘输入的2种方法
2015/06/16 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
Django 视图层(view)的使用
2018/11/09 Python
Keras实现DenseNet结构操作
2020/07/06 Python
若干个Java基础面试题
2015/05/19 面试题
求职信范文怎么写
2014/01/29 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
旅游活动总结
2014/08/27 职场文书
工作作风建设心得体会
2014/10/22 职场文书
教师个人总结范文
2015/02/11 职场文书
学校计划生育责任书
2015/05/09 职场文书
安全教育观后感
2015/06/17 职场文书
小学英语课教学反思
2016/02/15 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript