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 并把校验规则写在控件里面 ...
随机推荐
- MyBatis联合查询和使用association 进行分步式查询
查询Emp的同时,查出emp对应的部门Department 方法1:联合查询,使用级联属性封装结果集 <!-- 联合查询,使用级联属性封装结果集 type:要自定义规则的javaBean类型 i ...
- C# 面向对象的new关键字的使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- HTML5的学习(三)HTML5标签
3.HTML5新添加的标签 标签 描述 <article> 定义文章. <aside> 定义页面内容之外的内容. <audio> 定义声音内容. <bdi&g ...
- css scrollbar样式设置
参考链接:https://segmentfault.com/a/1190000012800450
- 代码控制打电话、发短信、发邮件、打开手机app等操作
很多时候我们需要利用我门自己的app进行一些打电话.发短信等的操作,那么如何利用代码实现呢,下面就介绍一些简单的方法来实现这些操作. 一.打电话: <1>最简单.最直接的方法----直接跳 ...
- 基于神经网络的颜色恒常性—Fully Convolutional Color Constancy with Confidence-weighted Pooling
论文地址: http://openaccess.thecvf.com/content_cvpr_2017/papers/Hu_FC4_Fully_Convolutional_CVPR_2017_pap ...
- 【windows核心编程】双机调试操作
1.1 中断与异常 计算机最重要的任务就是执行指令,只要你设置一个起始位置,他就会一条指令的执行下去.而中断和异常机制是为了防止计算机无休止地执行任意指令,出现错误时可以引导处理器转向正常控制流而诞生 ...
- python魔法方法:__getattr__,__setattr__,__getattribute__
python魔法方法:__getattr__,__setattr__,__getattribute__ 难得有时间看看书....静下心来好好的看了看Python..其实他真的没有自己最开始想的那么简单 ...
- ubuntu16.04+caffe+python接口配置
在Windows上用了一个学期的caffe了.深感各种不便,于是乎这几天在ubuntu上配置了caffe和它的python接口,现在记录配置过程,亲测可用: 环境:ubuntu16.04 , caff ...
- uboot中的快捷菜单的制作说明 【转】
转自:http://blog.chinaunix.net/uid-22030783-id-366971.html 在uboot中加入快捷操作菜单的方法非常简单,在论坛发布的uboot201003V ...