目录

一、表单概念

1.表单

2.提交的两种方式

二、form-serize与FormData

1.form-serize

2.FormData

三、文件上传案例分析


以下的既为本文的核心概括

一、表单概念

1.表单

form标签(表单)是用来收集用户输入的信息。

表单构成:

  • 表单标签: form
  • 表单域: input, checkbox, select ...
  • 表单按钮<button type="submit"></button>

2.提交的两种方式

1.表单自我提交

<!-- action: 接口的url地址 method: get或post,数据的提交方式(默认为GET) -->
<form action="提交地址" method="提交方式">// 其他元素
</form>

注意点:该提交方法会提交到指定地址并且会刷新整个网页的。靠的是method和action这两个属性

2.表单Ajax提交(案例参考下面的例子form-serize)

表单的默认提交效果不好(有页面刷新),我们直接用ajax的方式来提交。

要点:

  1. 给按钮添加点击事件的回调。
  2. 在回调函数中发请求

使用该方法不会存在整个页面提交的情况。

二、form-serize与FormData

1.form-serize

概念:能使用form-serialize插件, 提取整个表单数据

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>语法_表单Ajax提交</title>
</head><body><form><div><!-- 用户名 --><span>用户名:</span><input type="text" name="username" id="username"></div><div><!-- 密码: --><span>登录密码:</span><input type="password" name="password" id="password"></div><div><!-- 提交按钮 给按钮补充id属性,方便dom获取--><button id="submit">提交</button></div></form><script src="https://cdn.jsdelivr.net/npm/axios@0.27.2/dist/axios.min.js"></script><script src="./lib/form-serialize.js"></script><script>document.querySelector('#submit').addEventListener('click',(e)=>{e.preventDefault()let form = document.querySelector('form')//  { hash: true }加上了这个content-type { hash: true }的类型会变,具体的需要看后端需求let formObj = serialize(form, { hash: true })console.log(formObj);axios({url:'http://ajax-api.itheima.net/api/data',method:'POST',data:formObj}).then(res =>{console.log(res);})})</script>
</body></html>

格式

  • 格式1: serialize(form标签) 返回值是:查询字符串的格式
  • 格式2: serialize(form标签, { hash: true }) 返回值是: json对象

格式1: serialize(form标签)

格式2:serialize(form标签, { hash: true })


2.FormData

以键值对形式存放数据的容器, 常用于装载文件对象

FormData如何使用?(例子参考文件上传案例)

实例化一个对象,用它的append方法加入参数名和值

三、文件上传案例分析

整体思路是:

1.获取上传文件按钮

2.注册点击事件与改变事件

3.创建FormData容器

4.用Ajax获取的图片送到到服务器中

5.之后执行then操作获取成功之后:将图片的src值重新获取过来渲染到页面上

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>案例_头像上传</title><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"><style>.thumb-box {text-align: center;margin-top: 50px;}.thumb {width: 250px;height: 250px;object-fit: cover;border-radius: 50%;border: 5px solid black !important;}</style>
</head><body><div class="thumb-box"> <!-- 头像 --><label for="iptFile"><img class="img-thumbnail thumb" src="./lib/images/cover.jpg"></label><div class="mt-2"><button id="btn">文件上传</button><input type="file" hidden id="iptFile"  accept="image/*"></div></div><script src="https://cdn.jsdelivr.net/npm/axios@0.27.2/dist/axios.min.js"></script><script>/* 1.获取上传文件按钮2.注册点击事件与改变事件3.创建FormData容器 4.用Ajax获取传递的数据到服务器中5.将图片的src值重新获取过来渲染到页面上*/document.querySelector('#btn').addEventListener('click',()=>{document.querySelector('#iptFile').click()})document.querySelector('#iptFile').addEventListener('change',(e)=>{console.log(e);// 获取到文件存储的位置之后用容器存起来console.log(e.target.files[0]);const fd =new FormData()fd.append('avatar',e.target.files[0])axios({url:'http://ajax-api.itheima.net/api/file',method:'POST',data:fd}).then(res=>{document.querySelector('img').src=res.data.data.urlconsole.log(res);})})</script>
</body></html>

注意点:

file文件可以存的文件不限于是img,FormData中存放的是文件的位置(图片),之后通过data传递到服务器上去。

传上去之后,正确了才会走then的操作,将数据与图片的src进行更换

(log打印的是文件/图片的存储位置)

02 Ajax表单提交相关推荐

  1. ajax刷新iframe页面,通过iframe实现简单的ajax表单提交

    之前做项目都是用现成的jquery插件实现表单的校验以及ajax提交,但是今天有个简单的头像图片ajax上传,以及一个很简单的表单提交,实在不想引入一个插件了,本着代码量最小,最简单的原则,照着豆瓣照 ...

  2. 使用HTML5 FormData轻松完成Ajax表单提交

    在我们的日常开发中,经常都会用到Ajax来提交表单.让我们来看一个典型的例子: <form id="myform" action="webservice.php&q ...

  3. ajax提交输入内容,当输入用于提交时,AJAX表单提交

    我有一位设计师坚持通过点击回车和由AJAX提交的帖子和由Fancybox提供的回复提交的单个表单域.问题是return false不能阻止页面的提交.当输入用于提交时,AJAX表单提交 我在那里做错了 ...

  4. php提交后刷新父页面,jquery – php ajax表单提交没有刷新父页面

    我有一些问题的ajax表单提交 $("#send").on("click", function() { $.ajax({ type: "POST&qu ...

  5. Form 表单提交 和 Ajax 表单提交 的一些区别

    自己一些心得体会: 1:form 表单提交后进行后台处理程序,没有直接返回值,只能进行后台处理,Form标签里的所有数据全部提交到后台 ajax 表单提交,是可以局部提交,具有ajax的所有属性... ...

  6. web 表单自定义字段_带有自定义服务器字段验证的AJAX表单提交

    web 表单自定义字段 Overview 总览 This article presents a method for validating form data in a PHP script usin ...

  7. form表单提交和ajax表单提交

    相信大家在做itoo的时候都用过ajax异步提交数据,好处自然不言而喻,数据提交页面不会闪屏;页面局部更新速度快;网络带宽占用低.而表单提交则整个页面重绘.如果表单提交后跳转到另一个页面获取数据这种情 ...

  8. ajax 表单提交传文件,Ajax提交Form表单及文件上传

    刚刚申请下来的博客,写得第一篇.有点小激动,本人以前是一名工业3D设计师突然有些变故做上了JavaWeb开发: 前几天,发现了一些小问题.我在写后台管理页面时,需要上传一张图片.于是我就用很普通的Fo ...

  9. ajax表单提交excel,ajax使用formdata 提交excel文件表单到rails解析

    .modal-body .container-fluid .row .col-md-12 1.下载模板文件 = link_to '模板文件' .row .col-md-12 = form_tag '' ...

最新文章

  1. Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详介AvatarNode
  2. python函数基础和装饰器
  3. pythongui登录界面密码显示_用python写一个带有gui界面的密码生成器
  4. 互联网协议 — TCP — 拥塞控制(网络质量保障)
  5. IDEA通过Database连接MySql数据库
  6. java浅度克隆_java对象 深度克隆(不实现Cloneable接口)和浅度克隆
  7. systemstate dump 介绍
  8. 对象行为型 - 模版方法模式
  9. 启动mongodb服务时报错100
  10. Ortholab has been moved to Google Code
  11. windows 下访问bsd系统分区的小工具 ____FFS driver mount manager
  12. 使用windbg 检查c++程序死锁
  13. 微信小程序 java后勤服务管理系统app
  14. 手机组态软件 APP监控台达PLC C#全套源代码
  15. 怎样安装linux中文字体,linux如何安装中文字体库
  16. Inpaint破解版 - 图片去水印神器
  17. 迪文屏幕ttl转232选择
  18. cmos电路多余输入端能否悬空_CMOS和TTL集成门电路多余输入端的处理方法
  19. win10安装SVN失败问题汇总
  20. 【kafka专栏】集成apache kafka-clients实现数据消费者

热门文章

  1. (转)使用jsonp帮助你知道关注的他或她QQ音乐中搜藏了什么歌曲
  2. Linux内核设计与实现 原书第3版中文版pdf
  3. 容器上搭建Skywalking
  4. “杜拉拉思维模式”之五:面试礼仪速成
  5. C语言中的int类型的范围是由什么决定的
  6. element-plus popover的z-index问题
  7. Git——SSH免密登录
  8. Java设计模式之(十二)——观察者模式
  9. Python wheel文件
  10. Js 提交 form 表单