Vue简单封装axios之解决post请求后端接收不到参数问题


Posted in Javascript onFebruary 16, 2020

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请求后端接收不到参数问题,希望对大家有所帮助!

Javascript 相关文章推荐
javascript 面向对象编程基础 多态
Aug 21 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
Feb 16 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 Javascript
node.js中的fs.fstatSync方法使用说明
Dec 15 Javascript
JS获取网页图片name属性的方法
Apr 01 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
Mar 05 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
原生js实现3D轮播图
Mar 21 Javascript
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
Vue 构造选项 - 进阶使用说明
Aug 14 Javascript
vue配置多代理服务接口地址操作
Sep 08 Javascript
封装一下vue中的axios示例代码详解
Feb 16 #Javascript
Vue.js的模板语法详解
Feb 16 #Javascript
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 #Javascript
vue数据响应式原理知识点总结
Feb 16 #Javascript
vue中利用iscroll.js解决pc端滚动问题
Feb 15 #Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 #Javascript
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 #Javascript
You might like
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
优秀学生自我鉴定范例
2013/12/18 职场文书
聊城大学毕业生自荐书
2014/02/01 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
婚姻出轨保证书
2015/05/08 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
家长会开场白和结束语
2015/05/29 职场文书
我的1919观后感
2015/06/03 职场文书
导游词之日月潭
2019/11/05 职场文书
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers