java开发中有用到 ssm框架,在提交表单时如果有附件的话,就需要注意serialize()和new FormData()的区别了
1. serialize()
介绍:serialize()是JQuery方法,必须依赖jQuery,可序列化表单值创建 URL 编码文本字符串,就是将表单数据以字符串的形式返回,在ssm框架中可通过对象直接接收数据。
缺点:只能序列化一般数据,文件上传则无法序列化,不支持文件二进制流提交。
<script>
function toSubmit(){
//表单数据
const fromData = $("#searchForm").serialize();
$.post("", fromData, function(result){
console.info(result);
});
return false;
}
</script>
<form id="form" onsubmit="return toSubmit();">
<input type="text" name="param1">
<button onclick="toSubmit">提交</botton>
</form>
2. new FormData()
FormData是HTML5对象,目前可兼容大多主流的浏览器,但不兼容低版本IE浏览器。
与普通的Ajax相比,使用FormData 的最大优点就是可以异步上传二进制文件
<script>
function toSubmit(){
//表单数据
const fromData = new FormData($("#searchForm")[0]);
$.ajax({
type : 'POST',
url : '',
data : data,
cache : false,
async: true,
contentType: false,
processData: false,
success : function(result){
console.info(result)
}
});
return false;
}
</script>
<form id="form" onsubmit="return toSubmit();" enctype="multipart/form-data">
<input type="text" name="param1">
<button onclick="toSubmit">提交</botton>
</form>