使用jquery的ajax方法可以异步提交表单,成功后后台返回json数据,回调函数处理,可以不用刷新页面,达到异步的目的;
处理表单的数据可以用serialize()方法进行序列化,而如果提交的数据包括文件流的话,就需要使用 FormData对象:
不带文件的表单数据使用:var data = $(form).serialize();
带文件的表单数据使用: var data = new FormData($(form)[0]);
1…不带文件的ajax提交数据:
<form id="addForm" action="${pageContext.request.contextPath}/admin/saveAdd" method="post">
<input type="text" name="name" placeholder="请输入名字" />
<input type="password" name="password" placeholder="密码"/>
</form>
<button type="button" id="submitAdd">确认</button>
$("#submitAdd").click(function(){
var targetUrl = $("#addForm").attr("action");
var data = $("#addForm").serialize();
$.ajax({
type:'post',
url:targetUrl,
cache: false,
data:data,
dataType:'json',
success:function(data){
alert('success');
},
error:function(){
alert("请求失败")
}
})
})
二、带文件的ajax提交数据:
<form id="addForm" action="${pageContext.request.contextPath}/admin/saveAdd" method="post"enctype=" multipart/form-data">
<input type="text" name="name" placeholder="请输入名字" />
<input type="password" name="password" placeholder="密码"/>
<input type="file" name="avatar" />
</form>
<button type="button" id="submitAdd">确认</button>
$("#submitAdd").click(function(){
var targetUrl = $("#addForm").attr("action");
var data = new FormData($( "#addForm" )[0]);
$.ajax({
type:'post',
url:targetUrl,
cache: false, //上传文件不需缓存
processData: false, //需设置为false。因为data值是FormData对象,不需要对数据做处理
contentType: false, //需设置为false。因为是FormData对象,且已经声明了属性enctype="multipart/form-data"
data:data,
dataType:'json',
success:function(data){
alert('success');
},
error:function(){
alert("请求失败")
}
})
})
http://www.cnblogs.com/kenhome/p/7708347.html