关于ajax提交表单的一些实例及遇到的问题和解决办法
ajax提交的表单有两种情况:
第一种:input type类型没有file上传文件类型的表单
第二种:input type类型有file上传文件类型的表单
之所以分为两种:是因为原生ajax是不能提交文件的,因为ajax与后台的通信是通过字符串的.
第一种无file类型表单的ajax上传方式:
以下写的JQuery语法的ajax:
导jQuery包
<script src="jQuery.1.8.3.js" type="text/javascript"></script>
$.ajax({
url:"<%=request.getContextPath()%>/UserServlet?operator=webLoadPhoto",
type:"post",
data: $("#form1").serialize(),
success:function(data) {
}
error:function(data){
}
})
参数解释:
- url:发送请求的地址
- type:请求的方式 get/post
- data:绑定表单id为form1, serialize()方法表示将这个表单序列化
- success : function(){}: ajax提交成功后的回调函数
- error:function(){}:ajax提交失败后的回调函数
上面这种是最简单的无file类型的表单提交,网上还有其他写法,如果想要了解其他写法的话我后续会写上
第二种有file类型表单的ajax上传方式:
由于上传file类型的表单步骤虽然多,但是仔细看是不难的!建议大家有耐心的去看我的解说
先从网上下载一个jQuery.form.js提交表单的插件
地址:https://plugins.jquery.com/form/
导jQuery包
<script src="jQuery.1.8.3.js" type="text/javascript"></script>
<script src="jQuery.Form.js" type="text/javascript"></script>
$("#upload").click(function(){ //某个按钮的点击事件
document.getElementById("form1").encoding="multipart/form-data";
// 注意上面第一点:file类型表单需要把表单的 enctype属性值设为 enctype="multipart/form-data" 让后台知道这是一个二进制表单提交类型.
有时候这个enctype会由于一些问题导致后台识别不了是二进制表单提交,如果有这种情况,enctype="multipart/form-data" 换成 encoding="multipart/form-data" 或者两个一起写上去
var option = {
url :"<%=request.getContextPath()%>/UserServlet?operator=webLoadPhoto",
type :"post",
clearForm:false,
resetForm:false,
success : function(data) {
alert('上传成功!');
}
};
})
$("#form1").ajaxSubmit(option);
return false;
)}
参数解释:
var option是一个JavaScript对象的定义
- url:发送请求的地址
- type:请求的方式 get/post
- clearForm:表示提交ajax后是否清空表单字面值 (input type=text 框这里有你输入的值例如 11111,如果clearForm值为true,那么ajax提交后会清空框上的值11111)
- resetForm:表示提交ajax后是否重置表单值 (input type=text 框这里有你输入的值例如 11111,如果resetForm值为true,那么ajax提交后会清空 框上的值11111,同时重置成刚加载表单时候的input type=text的样子。)
- 第三第四点注意区别!
- success : function(){}: ajax提交成功后的回调函数
- error:function(){}:ajax提交失败后的回调函数
- $("#form1").ajaxSubmit(option); 是jQuery.form.js的一个ajax提交表单的方法,它可以优秀的把含有file类型的表单提交给后台
ps:reset是重置成最初状态,最初状态是可能有默认值的
clear是清空form控件的值
关于ajax提交表单的一些实例及遇到的问题和解决办法的更多相关文章
- Jquery ajax提交表单几种方法详解
[导读] 在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的 ...
- Jquery ajax提交表单几种方法
在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$('#表单ID').serialize();就行了,下面我来介绍两个提交表单数据的方法. ...
- Validator验证Ajax提交表单的方法
Validator验证Ajax提交表单的方法 转自:http://hunanpengdake.iteye.com/blog/1671360 当我们在一些稍微复杂的业务时,可能会遇到需要多个表单form ...
- lavarel框架中如何使用ajax提交表单
开门见山,因为laravel以post形式提交数据时候需要加{{csrf_field()}}防止跨站攻击,所以当你用ajax提交表单时候自然也要加 在网上看了很多的解决方式,我是用下面这种方法解决的: ...
- ajax提交表单序列化(serialize())数据
知识点: $("#form").serialize();将表单数据序列化为标准URL编码文本字符串(key1=value1&key2=value2…). 以下用一个例子来演 ...
- jquery实现ajax提交表单
一般情况下,我们提交form表单采用的是submit的方法,典型的场景如下. <form id="thisForm" method="post" acti ...
- ajax提交表单、ajax实现文件上传
ajax提交表单.ajax实现文件上传,有需要的朋友可以参考下. 方式一:利用from表单的targer属性 + 隐藏的iframe 达到类似效果, 支持提交含有文件和普通数据的复杂表单 方式二:使用 ...
- Ajax提交表单初接触
<!doctype html> <html class="no-js"> <head> <meta charset="utf-8 ...
- KindEditor:Ajax提交表单时获取不到HTML内容
当用Ajax提交表单时,KindEditor的内容获取不到,HTML数据获取不了 原因:当ajax提交时,KindEdito的HTML数据还没有同步到表单中来,那怎么去获取HTML数据呢? ----- ...
随机推荐
- CodeForces Round#480 div3 第2场
这次div3比上次多一道, 也加了半小时, 说区分不出1600以上的水平.(我也不清楚). A. Remove Duplicates 题意:给你一个数组,删除这个数组中相同的元素, 并且保留右边的元素 ...
- 【JavaScript】ESlint & Prettier & Flow组合,得此三神助,混沌归太清
Flow Flow的意义 Flow是faceBook开源的一个JavaScript静态类型检查工具,作用类似TypeScript,但是它不像TS那样是一门独立的语言,而是作为一个babel-plugi ...
- uiautomator2 实现App九宫格解锁
App九宫格解锁 之前在testerhome社区看见codeskyblue大佬写过一种方法,但是这种办法存在一个弊端,那就是多个点的坐标是写死的,也就是说要是换了部手机,九宫格解锁就行不通了,于是就想 ...
- 基于单细胞测序数据构建细胞状态转换轨迹(cell trajectory)方法总结
细胞状态转换轨迹构建示意图(Trapnell et al. Nature Biotechnology, 2014) 在各种生物系统中,细胞都会展现出一系列的不同状态(如基因表达的动态变化等),这些状态 ...
- LeetCode go
用Go语言刷LeetCode记录,只是为了练习Go语言,能力有限不保证都是最优解,只能在此抛转引玉了. 数据结构和算法 数据结构和算法是程序员的命根子,没了命根子也就没有了尊严. 1. 两数之和 题目 ...
- MySQL5.7初始化后5种密码重置方法
前言:由于好几次安装MySQL5.7后一直被重置密码所困扰,因此特意整理重置的方法 安装MySQL5.7 [root@node1 db]# ll 以下的rpm安装包可以随处下载 total 40235 ...
- 误删除系列一:linux的bin目录误删除后恢复操作
感言:一失足成千古恨,一不小心就把/usr/bin下所有的命令都删除了,当你以为自己很熟练时,当你以为自己操作对时,可能就是失手的时候,还好这次只是一个测试环境....God 恢复过程:(以下是在vs ...
- 实现非管理型UPS在linux主机上的停电自动关机
买了个山特的SANTAK TG-BOX 850 UPS,自带USB通讯线缆.本以为官方软件提供Linux下的CLI命令以监控UPS状态. 官网提供的下载链接巨慢无比不说,CLI下只提供了安装脚本,没有 ...
- mysql8.0版本忘记root密码
1.先关掉系统服务 net stop mysql 2.进入mysql安装目录的bin文件中,以管理员的方式运行cmd,然后输入如下命令,实现无密码登陆 mysqld --console --skip- ...
- [MySQL] 02- Optimisation solutions
前言 一.资源 MySQL 对于千万级的大表要怎么优化? - MySQL - 知乎[方法论] MySQL大表优化方案[一些优化的细节操作] MySQL大表优化方案[一些优化的细节操作] 分布式数据库下 ...