0
我使用的弹簧,阿贾克斯,并试图与其他数据形式使用Ajax文件上传和春季
if(form.field_UploadFile != undefined){
formContent.field_UploadFile=$(form.field_UploadFile )[0].files[0];
}
var fields ={};
for(var i=0; i<form.elements.length; i++){
if (form.elements[i].name){
if(form.elements[i].name.substring(0,6)=="field-"){
if(form.elements[i].type=='checkbox'){
if(form.elements[i].checked){
fields[form.elements[i].name]='checked';
}else{
fields[form.elements[i].name]='unchecked';
}
}else{
fields[form.elements[i].name]=form.elements[i].value;
}
}
}
}
$.ajax({
type: "POST",
url: "${pageContext.request.contextPath }/forms/createnocaptcha",
data: formContent,
dataType: "json",
contentType: false,
processData: false,
complete: function (xhr, status) {
$('html, body').animate({ scrollTop: 0 }, 0);
if (status === 'error' || !xhr.responseText) {
//alert("error");
$("#" + messagedivid).addClass("errorMessage");
$("#" + messagedivid).html("Form sunewsbmission error");
}
else {
var data = xhr.responseText;
//$("#" + messagedivid).addClass("successMessage");
//$("#" + messagedivid).html(data);
$("#" + feedbackdivid).addClass("successMessage");
$("#" + feedbackdivid).show();
$("#" + messagedivid).hide();
$(form)[0].reset();
}
控制器
@RequestMapping(value = "/forms/createnocaptcha", method=RequestMethod.POST)
@ResponseBody
public String createPageNoCaptcha(Form formContent, HttpServletRequest request, HttpSession session){
boolean status = false;
如果我把requestBody为formContent然后沿上传文件一起数据我得到415不受支持的媒体,如果它被删除,那么表单值为空。
也可以使用相同的控制器为多部分和非多部分。
请告知
感谢
我已经改变了我的代码,所以它是2 Ajax调用,一个用于添加其他数据,一个用于上传文件。但是当我尝试上传时,我得到“当前请求不是多部分请求” – user184008
function uploadFile(form){ \t var formFile = new Object()); \t formFile.UploadFile = $(form.UploadFile)[0] .files [0]; \t $就({ 类型: “POST”, URL: “$ {pageContext.request.contextPath} /形式/文件上传”, \t \t数据:formFile, \t \t ENCTYPE:“多部分/格式数据”, 的contentType:假, 过程数据:假, 成功:功能(数据){ 警报( “文件上传”); }, 错误:函数(){ 警报( '错误而请求..' ); } }); – user184008