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学习之闭包分析
Dec 02 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
JavaScript:Array类型全面解析
May 19 Javascript
浅析jquery数组删除指定元素的方法:grep()
May 19 Javascript
AngularJS教程之环境设置
Aug 16 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
Apr 04 Javascript
Vue中的混入的使用(vue mixins)
Jun 01 Javascript
Vue与Node.js通过socket.io通信的示例代码
Jul 25 Javascript
Angular6笔记之封装http的示例代码
Jul 27 Javascript
react实现换肤功能的示例代码
Aug 14 Javascript
使用angularjs.foreach时return的问题解决
Sep 30 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
Apr 17 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
php面向对象全攻略 (七) 继承性
2009/09/30 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
python数据归一化及三种方法详解
2019/08/06 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
numpy实现RNN原理实现
2021/03/02 Python
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
UNIX文件名称有什么规定
2013/03/25 面试题
车间调度岗位职责
2013/11/30 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
2015年班组长工作总结
2015/04/10 职场文书
家长反馈意见及建议
2015/06/03 职场文书
文明上网主题班会
2015/08/14 职场文书
JavaScript前端面试组合函数
2022/06/21 Javascript