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获取dom 对象 ajax操作 读写cookie函数
Nov 18 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
Mar 01 Javascript
对于Form表单reset方法的新认识
Mar 05 Javascript
用js读、写、删除Cookie代码续篇
Dec 03 Javascript
学习JavaScript设计模式(封装)
Nov 26 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
Dec 29 Javascript
JQuery用户名校验的具体实现
Mar 18 Javascript
JS 日期与时间戮相互转化的简单实例
Jun 22 Javascript
js防阻塞加载的实现方法
Sep 09 Javascript
vue插件vue-resource的使用笔记(小结)
Aug 04 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
Jul 23 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
Python如何批量生成和调用变量
2020/11/21 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
高中自我鉴定
2013/12/20 职场文书
班主任新年寄语
2014/04/04 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
Django显示可视化图表的实践
2021/05/10 Python
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
Go语言读取txt文档的操作方法
2022/01/22 Golang