jqueryajax异步提交表单数据的⽅法
使⽤jquery的ajax⽅法可以异步提交表单,成功后后台返回json数据,回调函数处理,可以不⽤刷新页⾯,达到异步的⽬的;处理表单的数据可以⽤serialize()⽅法进⾏序列化,⽽如果提交的数据包括⽂件流的话,就需要使⽤ FormData对象:
不带⽂件的表单数据使⽤:var data = $(form).serialize();
带⽂件的表单数据使⽤: var data = new FormData($(form)[0]);
⼀、不带⽂件的ajax提交数据:
html:form表单
<form id="addForm" action="${tPath}/admin/saveAdd" method="post">
<input type="text" name="name" placeholder="请输⼊名字" />
<input type="password" name="password" placeholder="密码"/>
</form>
<button type="button" id="submitAdd">确认</button>
jquery 异步处理
$("#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提交数据:
html:form表单
有⽂件上传的form表单需要在<form>标签⾥加⼊ enctype="multipart/form-data"属性 :
<form id="addForm" action="${tPath}/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>
jquery 异步处理
$("#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("请求失败")
}
})
})
上⾯是⽤<form>表单来构建FormData对象,如果没有<form>表单处理⽅式如下:
html:没有form表单
<div id="uploadFile">
<input id="file" name="avatar" type="file"/>
<button id="upload" data-url="/admin/upload" type="button">上传头像</button>
</div>
jquery异步处理:
$("#upload").click(function(){
var targetUrl = $(this).attr("data-url");
var data = new FormData();
//FormData对象加⼊参数
data.append('file', $('#file')[0].files[0]); //'file' 为参数名,$('#file')[0].files[0])获取上传的⽂件,如果需上传多个⽂件,要在<input>标签加上属性multiple $.ajax({
type:'post',
url:targetUrl,
cache: false,
processData: false,
contentType: false,
data:data,
dataType:'json',
success:function(data){
alert('success');
jquery的attr属性},
error:function(){
alert("请求失败")
}
})
})
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论