在vue项目中使用axios发送FormData

摘要:
qs.stringify()和JSON.stringify()作用相似,都是序列化,但他们完全不是一个东西,假设我要提交的数据是:leta={name:'hehe',age:10};qs.stringify序列化结果为name=hehe&age=10而JSON.stringify序列化结果为:{"name":"hehe","age":10}转成字符串使用application/x-www-form-urlencodedformat使用这种请求头发送法数据就是FromData格式默认情况下,axios将JavaScript对象序列化为JSON。要以application/x-www-form-urlencoded格式发送数据,您可以使用以下选项之一。url:'https://i.meituan.com/account/custom/mobilelogincode2',//请求路径(接口)method:'POST',//请求方式headers:{'content-type':'application/x-www-form-urlencoded'},//请求头,发送FormData格式的数据,必须是这种请求头。});console.log;}}}上面的this.$http就是axios因为我在vue原型上,挂载axios的时候,把axios改名为$http了。

这个是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   @click="getAuthCode">获取验证码</button></div>
        <div class="login_input"><input type="text" v-model="msg" placeholder="请输入验证码" autocomplete="false"></div>
      </div>
      <div   @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这篇博客,有一个地方提到了。

下面我们看一下效果:

请求时发送的信息:

在vue项目中使用axios发送FormData第1张

返回的数据:

在vue项目中使用axios发送FormData第2张

搞定了,结束。

免责声明:文章转载自《在vue项目中使用axios发送FormData》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用dd命令备份Linux分区解决百度网盘(百度云)分享链接不存在失效、分享的文件已经被取消的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

通过http方式 post天气,并合成语音

# coding=utf-8 import sys import json import pygame import time IS_PY3 = sys.version_info.major == 3 if IS_PY3: import requests from urllib.request import urlopen fro...

vue组件的inheritAttrs属性

vue官网对于inheritAttrs的属性解释:如果你不希望组件的根元素继承特性,你可以在组件的选项中设置 inheritAttrs: false。 可能不是很好理解,我们可以举个例子来验证一下。 父组件 parent-component.vue <template>  <div class="parent">     <...

web前端图片上传(2)

今天发现了一种ajax上传图片的方式,是以前没有用过的,首先来说下为什么要用这种方式。是因为原来后台是用的form表单的方式来提交表单数据的。但是觉得呢,这种方式不太好,因为要刷新页面,前台只用控制台看不到传输的参数(如果哪位大神知道怎么看到,请不吝赐教),所以我们就改成了ajax的方式,结果后台老哥说,前端改改就行了,后端不用改。然后我去找到了这种aja...

用HBuilderX 打包 vue 项目 为 App 的步骤

首先打包你的vue项目生成dist文件夹,教程请移步https://www.cnblogs.com/taohuaya/p/10256670.html 看完上面的教程,请确保你是将: 项目目录下的config文件夹里的index.js文件中,将build对象下的assetsPublicPath中的“/”,改为“./”后,打包生成的dist文件。 开始使用HB...

vue-打包为webapp,如何解决应用内跳转外部链接返回导致退出应用

思想:1.应用内部跳转至外部链接时,需处理为打开带原生导航栏的新页面 2.在原生导航栏中处理回退,为了回退后不直接退出应用,需执行其他操作,据hbuilder-窗口管理-关闭页面叙述: http://dev.dcloud.net.cn/mui/window/ mui.back()仅处理窗口逻辑,若希望在窗口关闭之前再处理一些其它业务逻辑,则可将业务逻辑抽象...

GatewayWorker + LayIM实现即时聊天

一、程序目录结构 二、代码展示 附LayIM开发文档:https://www.layui.com/doc/modules/layim.html 1、前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">...