02 Ajax表单提交

article/2025/9/21 0:43:40

目录

 一、表单概念

        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打印的是文件/图片的存储位置)


http://chatgpt.dhexx.cn/article/ZJE0LyWI.shtml

相关文章

Form表单提交

Form表单提交 form表单提交&#xff0c;表单提交分两种&#xff1a;自动提交 和 手动提交&#xff0c; form表单提交又分&#xff1a;post提交和get提交&#xff0c;以下用的都是post提交 一.自动提交表单&#xff1a; 自动提交表单&#xff0c;我们可以通过框架引用&#…

html 提交form表单提交数据格式,form表单提交数据

form表单提交的几种方法 HTML表单提交的几种方式方式一:通过submit按钮提交方式二:通过一般按钮button提交1/3javascript">functionsubmit1(){varform1=document.getElementById("form1");form1.action="bjpowernode.html";form1.submit();方式三…

JavaScript表单提交

表单提交在前端编程阶段中也是一个重点。它是由页面数据保存到后台数据库的重要枢纽&#xff0c;通过表单提交的方式将数据上传到数据库进行保存。同时这些数据也包含用户信息、统计信息、日志信息等等。 数据的信息不同&#xff0c;上传的方式也不同。在JavaScript中有四种种表…

表单提交的四种方式

表单提交的四种方式开发工具与关键技术&#xff1a;VS &#xff0c;JavaScript &#xff0c;Ajax 作者&#xff1a;刘任锋 撰写时间&#xff1a;2021年5月7日内容&#xff1a;将from表单里的内容提交到控制器上。 HTML布局 JS&#xff1a;先获取姓名&#xff0c;性别&#xff0…

表单的提交方式

表单有两个较特殊的属性&#xff0c;一个是method&#xff0c;是规定用于发送表单的HTTP方法&#xff08;提交表单的方式&#xff09;&#xff1b;还有一个是action&#xff0c;是规定当提交时向何处发送表单的数据&#xff08;要提交表单的地址&#xff09;。Form表单有一个自…

InputStream的read()读取机制

public void readArr() {// 明确文件File file new File("D:/net.txt");// 构建流的对象InputStream inputStream null;try {inputStream new FileInputStream(file);// 声名缓冲数组int i;byte[] bytes new byte[5];while ((i inputStream.read(bytes)) ! -1) …

java中的InputStream,OutputStream,Read,Writer

Java 中定义了两种类型的流&#xff1a;字节型&#xff0c;和字符型。 字节流&#xff1a;处理字节的输入和输出。包括读写二进制数据等方面的内容。 字符流&#xff1a;处理字符的输入和输出。他采用的是 Unicode 编码&#xff0c;可以实现国际化。使用字符流的另外一个好处…

InputStreamReader和OutputStreamWriter 的区别和用法

一、InputStreamReader 用于将一个字节流中的字节解码成字符 &#xff0c; 用法如下 Testpublic void Test19() throws Exception {InputStream in new FileInputStream("C:/hello.txt");// 读取文件的数据,注意文件编码为UTF-8,防止读取乱码// 将输入的字节流 ---…

InputStream.read() 和 OutputStream.write()方法

InputStream.read() 和 OutputStream.write()方法组合使用可以完成文件的复制功能。 先贴出代码 InputStream inputStream new FileInputStream(file);OutputStream os response.getOutputStream();byte[] b new byte[2048];int size;while ((size inputStream.read(b)) &…

InputStream 、 InputStreamReader和BufferedReader

在Java中&#xff0c;上述三个类经常用于处理数据流&#xff0c;下面介绍一下三个类的不同之处以及各自的用法。 InputStream &#xff1a; 是所有字节输入流的超类&#xff0c;一般使用它的子类&#xff1a;FileInputStream等&#xff0c;它能输出字节流&#xff1b;InputStre…

Java转换流(InputStreamReader/OutputStreamWriter)

文章目录 概述为什么会有转换流&#xff1f;InputStreamReaderOutputStreamWriter 概述 转换流是字节流到字符流的桥梁&#xff0c;在转换的过程中&#xff0c;可以指定编码。转换流也是一种处理流&#xff0c;它提供了字节流和字符流之间的转换。 转换流的两个类 InputStrea…

InputStream read()方法详解

在Java7中&#xff0c;InputStream被定义为一个抽象类&#xff0c;相应的&#xff0c;该类下的read()方法也是一个抽象方法&#xff0c;这也就意味着必须有一个类继承InputStream并且实现这个read方法。   查阅Java7 API&#xff0c;我们可以看到&#xff0c;在InputStream中…

【Java学习笔记】InputStreamReader的理解

一、InputStreamReader类 API文档说明&#xff1a;InputStreamReader类是从字节流到字符流的桥接器&#xff1a;它使用指定的字符集读取字节并将它们解码为字符。 它使用的字符集可以通过名称指定&#xff0c;也可以明确指定&#xff0c;或者可以接受平台的默认字符集。每次调…

InputStreamReader介绍使用

InputStreamReader类&#xff1a; java.io.InputStreamReader extends Reader InputStreamReader:是字节流通向字符流的桥梁&#xff1a;他使用指定的charset读取字节并将其解码为字符。(解码&#xff1a;把看不懂的变为能看懂的) 继承自父类的共性成员方法&#xff1a;int r…

jconsole工具监测jvm

背景 本篇文章为了记录如何使用jconsole工具。 jconsole工具使用环境是windows&#xff0c;监控服务端在linux上。 如何启动jconsole 找到你本地jdk的目录&#xff0c;进入bin目录&#xff0c;找到jconsole.exe程序双击启动即可 本地进程 如果是想调试本地程序的话&#xf…

jconsole远程连接服务器失败,提示“连接失败:是否重试“

操作步骤: 运行程序的时候加上参数: -Djava.rmi.server.hostname****** -Dcom.sun.management.jmxremotetrue -Dcom.sun.management.jmxremote.port9991 -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse 服务器打开端口:效果就…

java jconsole 远程连接_jconsole连接远程tomcat

咱们先说怎么做&#xff0c;然后再聊聊一些原理&#xff0c;当然&#xff0c;本人技术能力有限&#xff0c;有错误的地方&#xff0c;欢迎指正。 1.本机环境&#xff0c;远程环境 本机环境:windows 7 java version "1.8.0_121" 远程环境:centos 6.5 java…

jconsole远程连接的使用

背景 在项目做性能压测的时候&#xff0c;对程序进行分析&#xff0c;需要用到jconsole工具&#xff0c;以前都没用过&#xff0c;学习了一下 连接步骤 1. 打开工具 打开jdk安装目录 -> bin &#xff0c;找到jconsole.exe 双击打开 2. 到服务器中&#xff0c;加入以下…

简单使用Jconsole

引言 本文简单介绍Jconsole&#xff0c;死锁用例测试分析线程 正文 测试用例 DeadLockDemo &#xff1a; public class DeadLockDemo {private static Object resource1 new Object();//资源 1private static Object resource2 new Object();//资源 2public static void…

linux jconsole 监控jvm,JVM监测分析JConsole

一、基本操作 启动界面 1.JConsole是什么 从Java 5开始引入了JConsole。JConsole是一个内置Java性能分析器&#xff0c;可以从命令行或在GUI shell中运行。您可以轻松地使用JConsole(或者&#xff0c;它更高端的“近亲” VisualVM)来监控Java应用程序性能和跟踪Java中的代码。 …