VUE2.0中Jsonp的使用方法


Posted in Javascript onMay 22, 2018

本文主要介绍的是在VUE2.0Jsonp的使用方法,通过github引入jsonp和promise封装,实现跨域获取数据。

1.JSONP的用途和原理

使用JSONP主要是目的通过动态创建Script,动态拼接url,进而抓取数据,实现跨域。确切地说,AJAX请求由于同源影响,是不允许进行跨域请求的,而Script标签src属性中的链接却可以访问跨域的js脚本,利用这一特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的JS代码,在src属性中进行调用,实现跨域。

2.JSONP的使用方法

2.1 引入github的jsonp

打开项目>package.json>在”dependencies”下添加代码

"jsonp": "^0.2.1"

VUE2.0中Jsonp的使用方法

如图所示,然后执行安装cmd指令,并重新运行项目

npm install 
 npm run dev

2.2 封装jsonp.js

import originJSONP from 'jsonp'
export default function jsonp(url, data, option) {
 url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
 return new Promise((resolve, reject) => {
 originJSONP(url, option, (err, data) => {
  if (!err) {
  resolve(data)
  } else {
  reject(err)
  }
 })
 })
}
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) : ''
}

目录结构如下:

VUE2.0中Jsonp的使用方法

2.3 jsonp.js的API调用

在src的文件夹下创建api文件夹,用于储存api调用的js,新建config.js和recommend.js两个文件。

config.js
export const commonParams = {
 g_tK: 5381,
 inCharset: 'utf-8',
 outCharset: 'utf-8',
 notice: 0,
 format: 'jsonp'
}
export const options = {
 param: 'jsonpCallback'
}
export const ERR_OK = 0
recommend.js
import jsonp from 'common/js/jsonp'
import {commonParams, options} from './config'
export function getRecommend() {
 const url = 'https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg' //此处的url可以自行修改,本文是qq音乐链接
 const data = Object.assign({}, commonParams, {
 platform: 'h5',
 uin: 0,
 needNewCode: 1
 })
 return jsonp(url, data, options)
}

目录结构如下:

VUE2.0中Jsonp的使用方法

2.4 recommend.vue文件调用

在项目目录下的src>components>recommend>对应的文件.vue

recommend.vue

<template>
 <div class="recommend">
  recommend
 </div>
</template>
<script type="text/ecmascript-6">
import {getRecommend} from 'api/recommend'
import {ERR_OK} from 'api/config'
export default {
 name: 'recommend',
 created() {
 this._getRecommend()
 },
 methods: {
 _getRecommend() {
  getRecommend().then((res) => {
  if (res.code === ERR_OK) {
   console.log(res.data.slider)
  }
  })
 }
 }
}
</script>

2.5 页面jsonp请求成功结果

VUE2.0中Jsonp的使用方法

以上为vue2.0 jsonp简单使用方式,实例下载链接

总结

以上所述是小编给大家介绍的VUE2.0中Jsonp的使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
基于jquery用于查询操作的实现代码
May 10 Javascript
jQuery把表单元素变为json对象
Nov 06 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
Jun 30 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
Apr 26 Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 Javascript
jQuery 利用ztree实现树形表格的实例代码
Sep 27 jQuery
jQuery实现表单动态添加数据并提交的方法
Jul 19 jQuery
微信小程序自定义多列选择器使用详解
Jun 21 Javascript
node中使用log4js4.x版本记录日志的方法
Aug 20 Javascript
node.js开发辅助工具nodemon安装与配置详解
Feb 06 Javascript
vue cli4下环境变量和模式示例详解
Apr 09 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 Javascript
mpvue构建小程序的方法(步骤+地址)
May 22 #Javascript
基于mpvue的小程序项目搭建的步骤
May 22 #Javascript
安装vue-cli的简易过程
May 22 #Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 #Javascript
Vue单页及多页应用全局配置404页面实践记录
May 22 #Javascript
Vue页面骨架屏的实现方法
May 22 #Javascript
Angular网络请求的封装方法
May 22 #Javascript
You might like
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
十分钟带你快速了解React16新特性
2017/11/10 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
Python struct.unpack
2008/09/06 Python
python函数参数*args**kwargs用法实例
2013/12/04 Python
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
python 初始化一个定长的数组实例
2019/12/02 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
2014年秋季开学演讲稿
2014/05/24 职场文书
欢迎家长标语
2014/10/08 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
继承公证书格式
2015/01/26 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python