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的日期选择控件
Oct 27 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
PageSwitch插件实现100种不同图片切换效果
Jul 28 Javascript
jQuery实现简单下拉导航效果
Sep 07 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
May 15 Javascript
JS实现的幻灯片切换显示效果
Sep 07 Javascript
JavaScript设计模式之策略模式详解
Jun 09 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
Jun 29 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
Sep 18 Javascript
Vue 递归多级菜单的实例代码
May 05 Javascript
LayUi数据表格自定义赋值方式
Oct 26 Javascript
微信小程序实现单个或多个倒计时功能
Nov 01 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
重置版战役片段
2020/04/09 魔兽争霸
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
Python 正则表达式操作指南
2009/05/04 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
Python中的类与类型示例详解
2019/07/10 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
个人房屋转让协议书范本
2014/10/26 职场文书
2014年财政工作总结
2014/12/10 职场文书
故意伤害辩护词
2015/05/21 职场文书
小学科学课教学反思
2016/02/23 职场文书
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS