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弹出层输入框(示例代码)
Dec 11 Javascript
javascript实现json页面分页实例代码
Feb 20 Javascript
JS实现的通用表单验证插件完整实例
Aug 20 Javascript
提升jQuery的性能需要做好七件事
Jan 11 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
带你了解session和cookie作用原理区别和用法
Aug 14 Javascript
vue.js实现简单轮播图效果
Oct 10 Javascript
vue注册组件的几种方式总结
Mar 08 Javascript
深入浅析AngularJs模版与v-bind
Jul 06 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
Mar 26 Javascript
详细分析Node.js 多进程
Jun 22 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
Oct 02 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
JavaScript中的this实例分析
2011/04/28 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
调试Python程序代码的几种方法总结
2015/04/28 Python
python之Character string(实例讲解)
2017/09/25 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
医学护理毕业生自荐信
2013/11/07 职场文书
市场营销专业个人求职信范文
2013/12/14 职场文书
怎样填写就业意向
2014/04/02 职场文书
公司活动总结范文
2014/07/01 职场文书
民主评议党员个人总结
2015/02/13 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书