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中用星号表示预录入内容的实现代码
Jan 08 Javascript
asp.net中System.Timers.Timer的使用方法
Mar 20 Javascript
jquery实现的横向二级导航效果代码
Aug 26 Javascript
js数组去重的5种算法实现
Nov 04 Javascript
如何使用jquery easyui创建标签组件
Nov 18 Javascript
JS弹出窗口插件zDialog简单用法示例
Jun 12 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
Jul 07 Javascript
Ajax的概述与实现过程
Nov 18 Javascript
JS实现多物体运动的方法详解
Jan 23 Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 Javascript
js 实现ajax发送步骤过程详解
Jul 25 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
Jan 20 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 libevent 功能与使用方法详解
2020/03/04 PHP
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
JSON格式化输出
2014/11/10 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
python assert的用处示例详解
2019/04/01 Python
Python匿名函数及应用示例
2019/04/09 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
python如何变换环境
2020/07/21 Python
python中xlrd模块的使用详解
2021/02/01 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
C#如何进行LDAP用户校验
2012/11/21 面试题
测量实习生自我鉴定
2013/09/19 职场文书
法人授权委托书
2014/04/03 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
电信营业员岗位职责
2015/04/14 职场文书