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 相关文章推荐
得到文本框选中的文字,动态插入文字的js代码
Mar 07 Javascript
浅谈javascript的数据类型检测
Jul 10 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
Oct 06 Javascript
通过JS来判断页面控件是否获取焦点
Jan 03 Javascript
JavaScript中奇葩的假值示例应用
Mar 11 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
May 28 Javascript
微信小程序 WebSocket详解及应用
Jan 21 Javascript
Vue 父子组件、组件间通信
Mar 08 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
Sep 07 Javascript
vue使用一些外部插件及样式的配置代码
Nov 18 Javascript
浅谈React中组件逻辑复用的那些事儿
May 21 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 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和ACCESS写聊天室(七)
2006/10/09 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
Node.js自定义实现文件路由功能
2017/09/22 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
Fabric 应用案例
2016/08/28 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
成人毕业生自我鉴定
2013/10/18 职场文书
论文诚信承诺书
2014/05/23 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android