zoukankan      html  css  js  c++  java
  • 在vue项目中使用axios发送FormData

    这个是axios的中文文档,挺详细的:

    https://www.kancloud.cn/luponu/axios/873153

    文档中的    使用 application/x-www-form-urlencoded format    这一部分讲的就是  通过axios发送 FromData 的方法,

    下面是我在vue项目中使用的示例:

    在本组件的method添加了一个点击事件,点击了发送 FromData 格式的 post请求。

    <template>
        <div class="login">
    
          <div>
            <div class="login_input"><input type="text" v-model="tel" placeholder="请输入手机号" autocomplete="false"><button class="auth-code-btn" @click="getAuthCode">获取验证码</button></div>
    
    
            <div class="login_input"><input type="text" v-model="msg" placeholder="请输入验证码" autocomplete="false"></div>
          </div>
          <div class="login_btn" @click.stop="login">登录</div>
        </div>
    
    
    </template>
    
    <script>
        import Header from '../components/Header';
    
        /*
        我们想通过axios 提交FromData,需要用到qs库(这个库不用npm下载,直接引用即可),
        qs是一个url参数转化(parse和stringify)的js库。
        qs.stringify() 和JSON.stringify() 作用相似,都是序列化,但他们完全不是一个东西,
        假设我要提交的数据是:  let a = {name:'hehe',age:10};
        qs.stringify(a)序列化结果为  name=hehe&age=10
        而JSON.stringify序列化结果为: {"name":"hehe","age":10}  转成字符串
    
        使用 application/x-www-form-urlencoded format 使用这种请求头 发送法数据就是 FromData格式
        默认情况下,axios将JavaScript对象序列化为JSON。 要以application / x-www-form-urlencoded格式发送数据,您可以使用以下选项之一。
        这里我们是采用的ES6 语法 引入 的qs模块
        */
        import qs from 'qs';
    
        export default {
            name: "Login",
            components: {Header},
            data(){
              return {
                tel: '',
                msg: ''
              }
            },
    
    
            methods: {
    
    
              //获取验证码
              async getAuthCode(){
                // console.log('sss');
                // let data = await this.$http.post('https://i.meituan.com/account/custom/mobilelogincode2' + '?mobile=17664068406');
                //直接post请求及传参数
                // let data = await this.$http.post('https://i.meituan.com/account/custom/mobilelogincode2', { mobile: '17664068406'});
                // console.log(data);
    
                //通过POST方式发送FormData格式的参数 的写法  
                let data = await this.$http({//这里的 this.$http 就是axios 因为 我在vue原型上,挂载axios的时候,把axios改名为$http 了。
                  url: 'https://i.meituan.com/account/custom/mobilelogincode2',  //请求路径(接口)
                  method: 'POST', //请求方式
                  headers: { 'content-type': 'application/x-www-form-urlencoded' }, // 请求头,发送FormData格式的数据,必须是 这种请求头。
                  data: qs.stringify({mobile: '17664068406'}),  //发送请求要传的FormData参数。必须用 qs.stringify()序列化一下。
                });
    
                console.log(data);
    
    
    
              }
    
    
    
    
            }
    
    
    
        }

    上面的this.$http 就是axios 因为 我在vue原型上,挂载axios的时候,把axios改名为$http 了。 我挂载的方法,可以看  https://www.cnblogs.com/taohuaya/p/10177967.html 这篇博客,有一个地方提到了。

    下面我们看一下效果:

    请求时发送的信息:

     返回的数据:

     搞定了,结束。

  • 相关阅读:
    debug和console.write()有什么区别
    数据源绑定DataGridViewComboBox
    关于SqlDataAdapter的Update()方法
    反思。。
    C语言光标移动
    关于湖南工业大学“蓝桥杯”预选赛
    Left digit
    突然想写个超级马里奥
    如何知道一个数有多大位数
    Hut 新生训练赛第二场 迟来的解题报告
  • 原文地址:https://www.cnblogs.com/taohuaya/p/10181655.html
Copyright © 2011-2022 走看看