详解如何在Vue项目中发送jsonp请求
起因
公司临时要支撑河南的一个项目,做一个单点登录的功能。
简单来说,就是以下3步
客户方点击某个按钮进入我们的页面a
在页面a中由前端发送一个jsonp请求到客户方,得到一个token值
前端得到token值后向自己后端发送一个请求,后端根据token去redis(token的值就是redis里的key)里取值(key=token的值,value=用户信息等)判断用户是否已登陆,若登陆则根据取到的工号等信息后端模拟登陆,若没有登陆,则跳转到客户方登陆页面
怎么做
发送jsonp请求,axios官方貌似并不支持,所以排除🙅🏻♀️
经过辗转Google,发现了*vue-jsonp*这个插件
使用vue-jsonp
官方地址:vue-jsonp
下载
npm install vue-jsonp --save-dev
引入项目
import Vue from 'vue' import VueJsonp from 'vue-jsonp' Vue.use(VueJsonp)
然后,我们就可以在项目中愉快地使用啦✨✨
项目中xxx.vue文件
<script> export default { data() {...}, created() { // this.getJson() }, mounted() { window.jsonpCallback = (data) => { console.log(data.token) // 调用获取后端token的方法 this.getToken(data.token) } }, methods: { getJson() { this.$jsonp(this.url, { callbackQuery: "callbackParam", callbackName: "jsonpCallback" }) .then((json) => { // 返回的jsonp数据不会放这里,而是在 window.jsonpCallback console.log(json) }) }, getToken(token) { this.axios.post('/xxxurl') .then((res) => { // success 之后就正常登陆了 }) } } } </script>
是不是so easy 🤡但是真的整了一晚上才整出来,谁能知道jsonp的返回值在then里返回不了呢,打印也打印不出来。。。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Vue 仿百度搜索功能实现代码
无上下选择 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jsonp</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, us
-
基于vue-resource jsonp跨域问题的解决方法
最近在学习vue.js 碰到个ajax跨域请求的问题,之前知道可以用jsonp解决,但是一直没实践过,这次用发现里面好多问题,所以现在记录下来,希望可以给刚接触使用jsonp的同学一点帮助! 关于什么是jsonp,以及为什么要用jsonp我就不多说了,不明白的同学自行百度一下. 我们先来说一下jQuery里面的jsonp请求,这搞懂了 vue-resource 里面的jsonp就容易明白了. 这里我以json数据为例,首先我们通过 $.get可以直接得到一个我们想要的对象,但是用 jsonp 就
-
vue-resource:jsonp请求百度搜索的接口示例
1. yarn add vue-resource 2. main.js引入vue-resource import Vue from 'vue' import MintUI from 'mint-ui' import 'mint-ui/lib/style.css' import App from './App.vue' import router from './router' import VueResource from 'vue-resource' Vue.config.production
-
详解vue前后台数据交互vue-resource文档
这两天学习了vue-resource插件个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记. Vue可以构建一个完全不依赖后端服务的应用,同时也可以与服务端进行数据交互来同步界面的动态更新. Vue通过插件的形式实现了基于AJAX,JSPNP等技术的服务端通信. vue-resource是一个通过XMLHttpRequrest或JSONP技术实现异步加载服务端数据的Vue插件 提供了一般的 HTTP请求接口和RESTful架构请求接口,并且提供了全局方法和VUe组件实例方法. 使用的版本是
-
Vue中的vue-resource示例详解
vue-resource特点 vue-resource插件具有以下特点: 1. 体积小 vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip压缩后只有4.5KB大小,这远比jQuery的体积要小得多. 2. 支持主流的浏览器 和Vue.js一样,vue-resource除了不支持IE 9以下的浏览器,其他主流的浏览器都支持. 3. 支持Promise API和URI Templates Promise是ES6的特性,Promise的中文含义为"先知",Pro
-
使用 Vue.js 仿百度搜索框的实例代码
整理文档,搜刮出一个使用 Vue.js 仿百度搜索框的实例代码,稍微整理精简一下做下分享. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue demo</title> <style type="text/css"> .bg { background: #ccc; } </style> <s
-
详解如何在Vue项目中发送jsonp请求
起因 公司临时要支撑河南的一个项目,做一个单点登录的功能. 简单来说,就是以下3步 客户方点击某个按钮进入我们的页面a 在页面a中由前端发送一个jsonp请求到客户方,得到一个token值 前端得到token值后向自己后端发送一个请求,后端根据token去redis(token的值就是redis里的key)里取值(key=token的值,value=用户信息等)判断用户是否已登陆,若登陆则根据取到的工号等信息后端模拟登陆,若没有登陆,则跳转到客户方登陆页面 怎么做 发送jsonp请求,axios
-
详解如何在Vue项目中导出Excel
Excel 导出 Excel 的导入导出都是依赖于js-xlsx来实现的. 在 js-xlsx的基础上又封装了Export2Excel.js来方便导出数据. 使用 由于 Export2Excel不仅依赖js-xlsx还依赖file-saver和script-loader. 所以你先需要安装如下命令: npm install xlsx file-saver -S npm install script-loader -S -D 由于js-xlsx体积还是很大的,导出功能也不是一个非常常用的功能,所以
-
详解如何在vue项目中使用layui框架及采坑
根据官网的文档,要在一个html文件下使用layui里面的组件库其实很简单,但是在vue项目中使用该ui库却存在着很多坑,下面我们就详细讲解一下如何在vue-cli搭建的项目下使用layui 1.第一个坑:vue项目中使用npm安装引入时报错(目前并没有找到引入的合适的方式,知道的可以留言探讨) 在官网中我们可以看到他提到支持npm安装,但是当我们安装成功后,在main.js中引入时却报并不能找到该模块的错. 所以,我们先下载文件包,然后在html文件中用link和script标签的方式引入 2
-
详解如何在vue项目中引入elementUI组件
前提:已经安装好Vue 初始化vue vue init webpack itemname 运行初始化demo 运行一下初始后的demo,如果没有问题则进行安装elementUI npm run dev 安装 elementUI npm i element-ui -S 引入elementUI 在main.js中引入elementUI import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vu
-
详解如何在vue项目中使用lodop打印插件
项目中使用到打印的功能.领导推荐使用Lodop Lodop是什么东东,反正就是可以定制打印的插件... 既然是插件,vue的渐进式开发.完全可以拿来化为己用. 如何使用那?先大概看了下开发文档,就是一堆demo,一个js文件,三个安装程序,我擦,这么简单.come on 电脑安装C-Lodop,就可以打印预览来了. 开工,翻来覆去就一个LodopFuncs.js是干货,扔到项目中.就差怎么调里面的方法了. 如何引用,当然得改造喽 LodopFuncs.js 方法改造如下 //====判断是否需要
-
详解如何在vue项目中使用eslint+prettier格式化代码
对于前端代码风格这个问题一直是经久不衰,每个人都有自己的代码风格,每次看到别人代码一团糟时候我们都会吐槽下.今天给大家介绍如何使用eslint+prettier统一代码风格. 对于eslint大家应该比较了解了,是用来校验代码规范的.给大家介绍下prettier,prettier是用来统一代码风格,格式化代码的,支持js.ts.css.less.scss.json.jsx.并且集成了vscode.vim.webstorm.sublime text插件. 如果你的项目中采用的是ellint默认规则
-
详解如何在SpringBoot项目中使用统一返回结果
目录 1.创建Spring Boot项目 2.返回结果的封装 3.后端接口实现 3.1 创建实体类 3.2 创建dao层 3.3 创建Controller层 4.前端部分 5.验证 在一个完整的项目中,如果每一个控制器的方法都返回不同的结果,那么对项目的维护和扩展都会很麻烦:并且现在主流的开发模式时前后端分离的模式,如果后端返回各式各样的结果,那么在前后端联调时会非常的麻烦,还会增加前后端的格外任务. 所以,在一个项目中统一返回结果就是一个十分必要和友好的做法.接下来就用一个简单的demo来看看
-
详解如何在SpringBoot项目中使用全局异常处理
目录 1. 创建自定义异常 2.创建全局异常处理器 3.创建测试控制器 在完整的项目开发中,异常的出现几乎是无法避免的:如果凡是有可能出现异常的地方,我们都手动的使用try-catch将其捕获的话,虽然也能达到处理异常的效果,但是这样做会使得代码显得十分臃肿并且后期不好维护,也不利于多人系统开发. 在Spring Boot中提供了统一处理异常的方法,SpringBoot中有一个ControllerAdvice的注解,使用该注解表示开启了全局异常的捕获,我们只需在自定义一个方法使用Exceptio
-
如何在Vue项目中使用axios请求
在实际的项目中,和后台的数据交互是少不了的,我通常使用的是 axios 库,所以以下示例也是以 axios 为基础来进行封装的. 1.安装 首先是 npm 安装 axios 很简单:npm install axios 2.没有封装存在的问题 如果在没有封装接口的项目中,在文件中随处可以看到如下的接口调用方法: this.$axios.post("/user/add", { params: { name: this.name, age: this.age } }) .then(res =
-
实例详解ztree在vue项目中使用并且带有搜索功能
zTree 是一个依靠 jQuery 实现的多功能 "树插件".优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 上篇文章给大家介绍了vue中如何使用ztree,大家可以点击查看. 之前博客介绍过怎么在vue里展示以及获取点击元素的内容,此文章之介绍搜索功能 html <el-form-item label="机构" class="ztree-par"> <i class="icon_org"
随机推荐
- SQL 2008安装时出现从新启动计算机提示如何解决
- 用Redis实现微博关注关系
- 学习JavaScript设计模式之中介者模式
- IOS设计模式之组合设计模式
- 百度云推送图文教程IOS
- 利用ASP.NET MVC+EasyUI+SqlServer搭建企业开发框架
- JS 密码强度验证(兼容IE,火狐,谷歌)
- javascript打印大全(打印页面设置/打印预览代码)
- 限制CheckBoxList控件只能单选实现代码及演示动画
- 如何用正则取input type="text"中的value
- 用ASP编写的加密和解密类
- windows下如何安装和启动MySQL
- Android ContentProvider获取手机联系人实例
- jfreechart插件将数据展示成饼状图、柱状图和折线图
- Autorun 病毒清除工具bat代码
- JS重载实现方法分析
- oracle中distinct的用法详解
- 当鼠标移动时出现特效的JQuery代码
- js判断横竖屏及禁止浏览器滑动条示例
- Bootstrap基本插件学习笔记之轮播幻灯片(23)