HTML5中FormData物件的使用
阿新 • • 發佈:2019-01-06
FormData物件是HTML5的一個物件,目前的已經可以相容一些主流的瀏覽器。當然了,如果你的專案還需要相容IE8之類的低版本瀏覽器,這個好用的方法註定與你無緣啦。(不過你可以考慮jquery.form.js這種表單外掛,同樣容易上手)。
FormData在使用的時候可以不使用html程式碼程式碼的情況下,向後端提交資料,譬如下面這段程式碼:
var form = new FormData();
form.append("username","test");
form.append("password",123456);
// 可以這樣傳送資料
var req = new XMLHttpRequest();
req. open("post", "URL", false);
req.send(form);
// 當然也可以這樣
$.ajax({
url:"URL",
type:"post",
data:form,
processData:false,
contentType:false,
success:function(data){
window.clearInterval(timer);
console.log(data);
}
});
當然FormData必然不止這麼一個好處啦,FormData物件還支援從form表單中直接提取資料,然後直接提交給後臺。
另外值得一提的是,這種方式還可以上傳檔案內容,參考如下:
html部分
<form id="myform">
<input type="file" name="img"/>
<input type="text" name="username"/>
<input type="button" value="提交" onclick="test();"/>
</form>
js部分
function test(){
var form = new FormData(document.getElementById("myform" ));
// var req = new XMLHttpRequest();
// req.open("post", "URL", false);
// req.send(form);
$.ajax({
url:"URL",
type:"post",
data:form,
processData:false,
contentType:false,
success:function(data){
window.clearInterval(timer);
console.log(data);
},
error:function(e){
alert("error!!!");
window.clearInterval(timer);
}
});
get(); //此處為上傳檔案的進度條
}
參考上面,使用FormData,在構造這個物件的時候,把表單的物件,作為一個引數放進去,就可以了,然後FormData,就會得到這個表單物件裡面的所有的引數,甚至我們在表單中,都不需要宣告enctype =”multipart/form-data” ,就可以直接提交。
注意:使用FormData提交的時候,大家會注意到表單提交的是request payload,具體有興趣的同學可以自己百度,它不是之前的Form data提交的,所以後臺也是要經過處理的,比如springMVC就需要配置
<!-- 配置nultipartresolver,注意:id名必須這樣寫,不然會報錯 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxInMemorySize" value="10240000"></property>
</bean>