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 相关文章推荐
基于jquery的二级联动菜单实现代码
Apr 25 Javascript
jQuery点击tr实现checkbox选中的方法
Mar 19 Javascript
js获得页面的高度和宽度的方法
Feb 23 Javascript
JS判断客服QQ号在线还是离线状态的方法
Jan 13 Javascript
JavaScript中的this机制
Jan 30 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
EasyUI中在表单提交之前进行验证
Jul 19 Javascript
JavaScript中利用for循环遍历数组
Jan 15 Javascript
JavaScript面试出现频繁的一些易错点整理
Mar 29 Javascript
解决vue打包css文件中背景图片的路径问题
Sep 03 Javascript
Vue组件的使用及个人理解与介绍
Feb 09 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
封装一下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生成带有雪花背景的验证码
2008/09/28 PHP
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
webpack4从0搭建组件库的实现
2020/11/29 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
文秘专业个人求职信
2013/12/22 职场文书
大学生饮食配送创业计划书
2014/01/04 职场文书
责任心演讲稿
2014/05/14 职场文书
催款函怎么写
2015/06/24 职场文书
合作意向书范本
2019/04/17 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android