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 相关文章推荐
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
Mar 06 Javascript
node中socket.io的事件使用详解
Dec 15 Javascript
在Javascript中处理字符串之big()方法的使用
Jun 08 Javascript
关于JavaScript作用域你想知道的一切
Feb 04 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
angularjs+bootstrap实现自定义分页的实例代码
Jun 19 Javascript
Vue.js实现价格计算器功能
Mar 30 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
Sep 30 Javascript
vue中实现methods一个方法调用另外一个方法
Feb 08 Javascript
webpack分离css单独打包的方法
Jun 12 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 Javascript
详解node和ES6的模块导出与导入
Feb 19 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
Python编写登陆接口的方法
2017/07/10 Python
django输出html内容的实例
2018/05/27 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
python实现实时视频流播放代码实例
2020/01/11 Python
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
企业总经理岗位职责
2014/02/13 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书