Jquery實(shí)現(xiàn)Ajax異步提交時(shí)報(bào)錯(cuò)非法調(diào)用,應(yīng)該是輸入?yún)?shù)錯(cuò)誤.
var formData = new FormData();
formData.append(‘userName‘,$scope.userName);
formData.append(‘file‘,$scope.file);
var url ="http://localhost:8080/SpringMVCT/rest/v1/uploader";
$.ajax({
type:‘POST‘,
url:url,
data:formData,
contentType:undefined,
mimeType:"multipart/form-data",
success:function(data){
// success
}
});
$scope.file這個(gè)File類型的參數(shù)被預(yù)先處理,于是設(shè)置$.ajax 的processData:false,就會(huì)請(qǐng)求成功。
$.ajax({
type:‘POST‘,
url:url,
data:formData,
contentType:undefined,
processData:false,
mimeType:"multipart/form-data",
success:function(data){
// successs
}
});
processData用于對(duì)data參數(shù)進(jìn)行序列化處理,默認(rèn)值是true。默認(rèn)情況下發(fā)送的數(shù)據(jù)將被轉(zhuǎn)換為對(duì)象,如果不希望把File轉(zhuǎn)換,需要設(shè)置為false。同樣在ajax提交其他請(qǐng)求時(shí),如果數(shù)據(jù)是其他表單的內(nèi)容(比如文本類型的input),也要轉(zhuǎn)化成值。