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 相关文章推荐
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
Jan 13 Javascript
iframe 上下滚动条如何默认在下方实现原理
Dec 10 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
Jul 16 Javascript
jquery图片倾斜层叠切换特效代码分享
Aug 27 Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 Javascript
JavaScript事件详细讲解
Jun 27 Javascript
JS中精巧的自动柯里化实现方法
Dec 12 Javascript
vue的mixins属性详解
Mar 14 Javascript
JS多个表单数据提交下的serialize()应用实例分析
Aug 27 Javascript
js判断一个对象是数组(函数)的方法实例
Dec 19 Javascript
Vue js with语句原理及用法解析
Sep 03 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-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
Add a Table to a Word Document
2007/06/15 Javascript
Prototype Object对象 学习
2009/07/12 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
python迭代器的使用方法实例
2013/11/21 Python
如何在Python中编写并发程序
2016/02/27 Python
对pandas中to_dict的用法详解
2018/06/05 Python
Python处理session的方法整理
2019/08/29 Python
django中media媒体路径设置的步骤
2019/11/15 Python
Python中常见的数制转换有哪些
2020/05/27 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
药学专业学生的自我评价分享
2014/02/06 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
经费申请报告
2015/05/15 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python