Vue简单封装axios—解决post请求后端接收不到参数问题
1.在src/下新建api文件夹,api/下新建index.js和public.js
在public.js中:
import axios from 'axios';
import qs from 'qs'
import router from '../router'
import { MessageBox} from 'mint-ui' // 注意点,按照以下写
var instance = axios.create();
instance.defaults.timeout = 10000;
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; export default {
fetchGet(url, params = {}) {
return new Promise((resolve, reject) => {
axios.get(url, params).then(res => {
if(res.data.code === 302) {
MessageBox('提示', '登录失效,请重新登录');
MessageBox.alert('登录失效,请重新登录', '提示').then(action => {
router.push("/login");
});
}
resolve(res.data);
}).catch(error => {
reject(error);
})
})
},
fetchPost(url, params = {}) {
/*
axios post请求后端接收不到参数问题: 解决方案一:有效,但是兼容性不是很好,不是所有浏览器都支持
let data = new URLSearchParams()
for (var key in params) {
data.append(key, params[key])
}
*/ // 解决方案二:使用qs模块(axios中自带),使用qs.stringify()序列化params
return new Promise((resolve, reject) => {
axios.post(url, qs.stringify(params)).then(res => {
resolve(res.data);
}).catch(error => {
reject(error);
})
})
}
}
2.在index.js中:
import http from './public' export const getStation = (params) => {
return http.fetchGet('/hydro/rest/getBelongUser', params);
} export const userLogin = (params) => {
return http.fetchPost("/hydro/rest/login", params);
}
3.在Login.vue中调用post请求方法:
<template>
<div class="login">
<h1>登录页面</h1>
<input type="text" placeholder="请输入用户名" v-model="Username">
<input type="password" placeholder="请输入密码" v-model="Password">
<input type="button" value="登录" @click="toLogin">
</div>
</template> <script>
import {userLogin} from "../../api/index" export default {
name: 'app',
data() {
return {
Username: "",
Password: ""
}
},
methods: {
toLogin() {
let params = {
username: this.Username,
password: this.Password
}; userLogin(params).then(res => {
if(res.code === 200) {
this.$router.push("/home")
}
})
}
}
}
</script>
#### 4.在Home.vue调用get请求方法
<template>
<h1 class="home">
{{stationName}}
</h1>
</template> <script>
import {getStation} from "../../api/index" export default {
data() {
return{
stationName: ""
}
},
created() {
getStation().then(res => {
this.stationName = res.msg;
})
}
}
</script>
Vue简单封装axios—解决post请求后端接收不到参数问题的更多相关文章
- vue --- axios发post请求后台接收不到参数的三种解决方案
最近用vue 做项目使用axios 发送post 请求时遇到了前端传数据后端接收不到的情况: 后来仔细对比发现axios传值是这样的: 而 ajax 传值是这样的: 一个 Request Paylo ...
- axio post 请求后端接收不到参数的解决办法
原因是没有对参数进行序列化 默认情况下,axios将JavaScript对象序列化为JSON. 要以应用程序/ x-www-form-urlencoded格式发送数据. 在拦截器前修改 方法一,用原生 ...
- Vue 封装axios(四种请求)及相关介绍(十三)
Vue 封装axios(四种请求)及相关介绍 首先axios是基于promise的http库 promise是什么? 1.主要用于异步计算 2.可以将异步操作队列化,按照期望的顺序执行,返回符合预期的 ...
- Jquery Ajax简单封装(集中错误、请求loading处理)
Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...
- 微信小程序:使用wx.request()请求后台接收不到参数
问题描述: 微信小程序:wx.request()请求后台接收不到参数,我通过wx.request()使用POST方式调用请求,参数传递不到后台 解决方案: Content-Type': 'applic ...
- 简单封装axios api
可以在代码逻辑中写axios请求,处理请求结果,但是随着项目越来越大,代码会很繁琐,不容易维护,所以,可以把一些在所有请求中都要处理的逻辑抽取出来,封装成api方法.比如每次请求中都要判断是否有权限, ...
- axios 发 post 请求,后端接收不到参数的解决方案
问题场景 场景很简单,就是一个正常 axios post 请求: axios({ headers: { 'deviceCode': 'A95ZEF1-47B5-AC90BF3' }, method: ...
- 封装axios,带请求头和响应头
import axios from "axios"; import qs from "qs"; //处理参数 import router from '../ro ...
- axios发post请求,后端接收不到参数的问题
axios会帮我们自动转换请求数据和响应数据 以及 自动转换JSON数据,我们的请求头转换成 Content-Type变成了application/json;charset=utf-8,然后因为我们的 ...
随机推荐
- 算法题常见的BUG错误(总结)
1. 快排的partition if(l >= r) return ; int i = l, j = r; int tmp = v[i]; while(i < j) { while(i & ...
- 【bzoj1324】Exca王者之剑(8-9 方格取数问题)
*题目描述: 在一个有m*n (m,n<=100)个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法, ...
- c++复习——类(2)
1.this指针 this指针是一个指向对象的指针. this指针是一个隐含于成员函数中的对象指针. this指针是一个指向正在调用成员函数的对象的指针. 类的静态成员函数没有this指针 ...
- GeoServer-2.12安装MbTiles扩展插件
- Java中使用Redis的几种数据类型总结
1.String,最基本的类型 方法 set.get 2.hash redis 127.0.0.1:6379> HMSET user:1 username redis.net.cn passw ...
- 年薪100万的人都是怎么玩Excel的?
年薪100万的人都是怎么玩Excel的? 2017-12-21 13:42美国 作者:珍妮Jenny 来源:一周进步(ID:weekweekup) 本文已获原作者转载授权,如需转载请联系原公号 本文重 ...
- websocket 无需通过轮询服务器的方式以获得响应 同步在线用户数 上线下线 抓包 3-way-handshake web-linux-shell 开发
https://code.google.com/archive/p/phpwebsocket/source/default/source The WebSocket API (WebSockets) ...
- linux安装 redis
通过源码编译安装 1.下载源码包 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩redis tar -zxf redi ...
- leetcode 46 全排列 (python)
给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] ...
- Delphi XE2 之 FireMonkey 入门(27) - 数据绑定: TBindingsList: TBindScope
Delphi XE2 之 FireMonkey 入门(27) - 数据绑定: TBindingsList: TBindScope 如果在编写表达式时, 如果能够随意指认需要的控件就好了(通过 Owne ...