axiosfrom表单提交

172 阅读2分钟

form表单提交

表单的三部分组成

  • HTML的就是表单标签,它是一个容器,用来将页面上指定区域规定为表单区域

  • 表单域提供采集用户信息的渠道,常见的的表单域有,、、等

    • 每个单域表单必须包含name熟悉,否则用户填写的信息无法被采集
  • 表单按钮当表单数据填写完毕后,用户点击表单按钮,会触发的提交操作,从而把采集到的提交给服务器

    • type = “submit” 表示提价按钮的意思
    • type 属性的默认值就是submit ,因此type=“submit”可以省略
属性可选说明
action接口url把表单采集到的数据,提交到那个接口
methodGET或POST数据的提交方式(默认是GET)
enctypeapplitirt数据的编码格式,具体是指:表单提交给服务器钱,如何对将要进行提交的数据进行编码

以GET方式提交数据表单

  • method:默认是get
  <body>
     <form action="提交地址" method="get" ech>
       <span>用户名:</span>
       <input type="text" name="urername" />
       <br />
       <span>密码 </span>
       <input type="" name="pwd" />
       <button>提交</button>
     </form>

以POST方式提交表单

  <!-- enctype 默认是:application/x-www-form-urlencoded -->
 <form action="请求地址" method="post">
       <span>用户名:</span>
       <input type="text" name="urername" />
       <br />
       <span>密码 </span>
       <input type="" name="pwd" />
       <button>提交</button>
     </form>

上传文件的请求

    <form action="请求地址" method="post" enctype="multipart/form-data">
       <span>用户名:</span>
       <input type="text" name="urername" />
       <br />
       <span>密码 </span>
       <input type="" name="pwd" />
       <button>提交</button>

enctype两个可选值之间的区别

  • 只有method属性的值等于POST,才必须设置enctype属性,它的属性可选值有两个

    属性名是否常用应用场景
    apploication/x-www-from - urlencoded表单中不包含上传文件的场景
    multipart/form-data表单中包含上传文件的场景

提交数据的弊端

  • 要发生页面跳转
  • 用户体验感差

解决方案

  • 负责收集数据
  • Ajax负责提交数据

Ajax提交表单

  const form = document.querySelector("form")
         // 监听submit事件
         form.addEventListener('submit',function(e){
             // 阻止表单的默认行为
             e.preventDefault();
             // 提交Ajax数据
             axios({
                 method:'piost',
                 url:'地址',
                 data: {
                     username:document.querySelector('.name').vlaue,
                     pwd:document.querySelector('.pwd').vlaue,
                 },
             }).then(res=>{
                 console.log(res);
             })
             
         })
  • 简化开发者使用过程,axios为所有支持者提供请求别名

全局请求根路径设置

  • 提供维护性

      axios.defaults.baseURl = "请求根路径";
    

axios拦截器

  • 拦截器:用来全局拦截axios的每一次请求与响应

    • 好处:可以把每个请求中,某些重复性的业务代码封装到拦截器中,提高代码复用性

\