Ajax提交form表单内容和文件(jQuery.form.js)
jQuery官网是这样介绍form.js A simple way to AJAX-ify any form on your page; with file upload and progress support.
简单来说就是用ajax提交form表单(含file内容)内容
form.js提供的API方法
| API | API描述 | 参数 |
| ajaxForm | 增加所有需要的事件监听器,为ajax提交表单做准备。ajaxForm并不能提交表单。在document的ready函数中,使用ajaxForm来为ajax提交表单进行准备。 | 接受0个或1个参数。参数可以是一个回调函数,也可以是一个Options对象。 |
| ajaxSubmit | 使用ajax提交表单。 | 接受0个或1个参数。参数可以是一个回调函数,也可以是一个Options对象。 |
| formSerialize | 将表单串行化(或序列化)为一个查询字符串。这个方法将返回以下格式的字符串:name1=value1&name2=value2。 | 无 |
| fieldSerialize | 将表单的字段元素串行化(或序列化)为一个查询字符串。当只有部分表单字段需要进行串行化(或序列化)时,使用这个就很方便了。返回以下格式的字符串:name=value1&name2=value2。 | 无 |
| fieldValue | 返回匹配插入数组中的表单元素值。该方法以数组的形式返回数据。如果元素值被判定可能无效,则数组为空。 | 无 |
| resetForm | 将表单恢复到初始状态。 | 无 |
| clearForm | 清除表单元素。该方法将所有的text、password、textarea置空,清除select元素中的选定,以及所有radio按钮和checkbox按钮重置为非选定状态。 | 无 |
| clearFields | 清除字段元素。只有部分表单元素需要清除时方便使用。 | 无 |
ajaxForm和ajaxSubmit都支持Options对象参数
| target | 指明页面中由服务器响应进行更新的元素。元素的值可能被指定为一个jQuery选择器字符串、一个jquery对象、一个DOM元素。 | 默认值:null |
| url | 指定提交表单数据的URL。 | 默认值:表单的action属性值 |
| type | 指定提交表单数据的方法(method):“GET”或“POST”。 | 默认值:GET |
| beforeSubmit | 表单提交前被调用的回调函数。如果回调函数返回false表单将不被提交。回调函数带三个调用参数:数组形式的表单数据,jQuery表单对象,以及传入ajaxForm/ajaxSubmit中的Options对象。 | 默认值:null |
| success | 表单成功提交后调用的回调函数。然后dataType选项值决定传回responseText还是responseXML的值。 | 默认值:null |
| dataType | 返回的数据类型:null、"xml"、"script"、"json"其中之一。 | 默认值:null |
| resetForm | 表示如果表单提交成功是否进行重置。 | 默认值:null |
| clearForm | 表示如果表单提交成功是否清除表单数据。 | 默认值:null |
| timeout | 限制请求的时间,当请求时间大于设置时间后,跳出请求 |
form表单代码
<form id="form-js-demo" action="test.php" method="post">
<p>Name: <input type="text" name="name" value="name"/></p>
<p>password: <input type="text" name="password" value="password"/></p>
<p>
<input type="checkbox" name="letter" value="A">A
<input type="checkbox" name="letter" value="B">B
<input type="checkbox" name="letter" value="C">C
</p>
<p>
<input type="radio" name="size" value="S">S
<input type="radio" name="size" value="M">M
<input type="radio" name="size" value="L">L
</p>
<p>File: <input type="file" name="file"/></p>
<p>Comment: <textarea name="comment">comment</textarea></p>
<p>
<button type="submit" id="submit">Submit</button>
<button type="button" id="serialize">serialize</button>
<button type="submit" id="options">Options Submit</button>
</p>
</form>
<div class="data-show"></div> <script src="jquery-3.3.1.min.js"></script>
<script src="jquery.form.js"></script>
提交时使用下面三处代码任意一处皆可,提交后台数据和form普通提交后一样,该怎样处理就怎样处理
#1、ajaxForm 提交
$('#form-js-demo').ajaxForm(function (obj) {
console.log(obj);//obj 后台处理数据的返回值
});
#2、ajaxSubmit 提交
$('#form-js-demo').submit(function () {
$('#form-js-demo').ajaxSubmit(function (obj) {
//obj 后台处理数据的返回值
console.log(obj);
});
return false;//若不return false,会跳转提交(重复提交)。
});
#3、options 参数提交
$('#options').click(function () {
var options = {
url: 'test2.php', //form提交路由,form表单和options都可设置,两处都设置了则以form中设置为准
type: 'get', //form提交方式,form表单和options都可设置,两处都设置了则以form中设置为准(method:post/get)
target: '.div-display', //服务器返回的数据显示在元素(id或class)中显示(后台返回数据原样显示在.div-display中)
beforeSubmit: function (obj) {
//obj form提交数据,以对像存储
console.log(obj);
//return false;//设置false 则不会提交
}, //提交前回调函数
success: function (obj) {
//obj 后台返回数据 若options设置了 target 项 obj 返回 0
console.log(obj);
}, //提交成功后回调函数
dataType: null, //服务器返回数据类型
clearForm: true, //提交成功后是否清空表单中的字段值
restForm: true, //提交成功后是否重置表单中的字段值,即恢复到页面加载时的状态
timeout: 6000 //设置请求时间,超过该时间后,自动退出请求,单位(毫秒)。
};
$('#form-js-demo').ajaxForm(options);
form.js 表单序列化方法测试和对比
$("#serialize").click(function () {
//jquery 自带表单序列化方法 会忽略 input[type="file"] 内容
console.log($('#form-js-demo').serialize());
//name=name&password=password&letter=B&letter=C&size=M&comment=comment
//form.js 表单序列化方法 包含 input[type="file"] 内容
console.log($('#form-js-demo').formSerialize());
//name=name&password=password&letter=B&letter=C&size=M&file=&comment=comment
//form.js 表单序列化方法 只序列input[type="text"]内容
console.log($('#form-js-demo input[type="text"]').fieldSerialize());
//name=name&password=password
});
Ajax提交form表单内容和文件(jQuery.form.js)的更多相关文章
- ajax 提交所有表单内容及上传图片(文件),以及单独上传某个图片(文件)
我以演示上传图片为例子: java代码如下(前端童鞋可以直接跳过看下面的html及js): package com.vatuu.web.action; import java.io.File; imp ...
- vue form表单上传文件
<script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js">< ...
- 巨蟒python全栈开发django11:ajax&&form表单上传文件contentType
回顾: 什么是异步? 可以开出一个线程,我发出请求,不用等待返回,可以做其他事情. 什么是同步? 同步就是,我发送出了一个请求,需要等待返回给我信息,我才可以操作其他事情. 局部刷新是什么? 通过jq ...
- django 基于form表单上传文件和基于ajax上传文件
一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...
- 表单(form)成为 ajax 提交的表单(form)
1.form <form id="ff" method="post"> <div> <label for="name&q ...
- JsonResponse类的使用、form表单上传文件补充、CBV和FBV、HTML的模板语法之传值与过滤器
昨日内容回顾 Django请求生命周期 # 1.浏览器发起请求 到达Django的socket服务端(web服务网关接口) 01 wsgiref 02 uwsgi + nginx 03 WSGI协议 ...
- JavaScript实现form表单的多文件上传
form表单的多文件上传,具体内容如下 formData对象可以使用一系列的键值对来模拟一个完整的表单,然后使用Ajax来发送这个表单 使用<form>表单初始化FormData对象的方式 ...
- 使用form表单上传文件
在使用form表单上传文件时候,input[type='file']是必然会用的,其中有一些小坑需要避免. 1.form的 enctype="multipart/form-data" ...
- jQuery Validate 表单验证插件----利用jquery.metadata.js将校验规则直接写在class属性里面并定义错误信息的提示
一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW 访问密码 f224 二. 添加一个另外一个插件jquery.metadata.js 并把校验规则写在控件里面 ...
随机推荐
- 三、内存管理单元---MMU
3.1 MMU介绍 3.1.1 MMU 特性 内存管理单元(Memory Management Unit)简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.现在的多用户多进 ...
- 基于报错的SQL注入整理
SQLServer 一.利用错误消息提取信息 输入 'having 1=1 --(having一般要与group by一起来使用,group by是用来进行分组的,having后面是用来进行判断的), ...
- 滑动条QSlider
QSlider只提供整数范围 滑块接受Tab键的焦点,并同时提供了一个鼠标滚轮和键盘接口.键盘接口如下: Left/Right 移动水平滑块一个步长.Up/Down 移动垂直滑块一个步长.PageUp ...
- Java 学习札记(二)TomCat安装配置
1.下载TomCat 下载地址:http://tomcat.apache.org/ 2.配置环境变量 CATALINA_HOME:F:\JAVA\apache-tomcat-6.0.18\apache ...
- kali linux 安装QQ
之前在kali上尝试过Wineqq2012,显示版本过低,放弃了.最近听说crossover比wine的支持要好,再次尝试. 1.下载 https://www.codeweavers.com/ 选择d ...
- dataTable插件锁表头和锁列的教程
源代码下载 我的同事让我帮忙给弄个锁头锁列的插件.结果找到大名鼎鼎的jquery dataTable插件. 今天我们来介绍不常用的功能:dataTable插件锁表头和锁前两列 由于是移动前端.我们不考 ...
- 中间人攻击之ettercap嗅探
中间人攻击: 中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的 ...
- Sql 正确删除用户过期的数据
怎样才算是正确的删除过期的数据呢?先交代一下前提,XX网站上面有一个放心企业专区,办理超级会员即可成为放心企业,放心企业可设置推荐职位展示在放心企业专区,信息都是存放在Info表中的,所谓的推荐职位就 ...
- oracle ip 改为 机器名
1 hosts文件 添加 ip 机器名 这一行 2 修改listner.ora 和tnsora.ora ip改为机器名 3 重启服务
- Springboot分模块开发详解(1):建立父工程
基础服务,见下: base是父工程,base-entity是实体层,base-dao是DAO层,base-service是业务层,base-controller是WEB控制器层,base-web是页面 ...