2015-12-22 72 views
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不受支持的媒体,如果它被删除,那么表单值为空。

也可以使用相同的控制器为多部分和非多部分。

请告知

感谢

+0

我已经改变了我的代码,所以它是2 Ajax调用,一个用于添加其他数据,一个用于上传文件。但是当我尝试上传时,我得到“当前请求不是多部分请求” – user184008

+0

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

回答

0

我们需要JS对象转换成JSON字符串发送前。

改变你的数据在Ajax调用这个样子,

data: JSON.stringify(formContent), 

然后用@RequestBody Form formContent

+0

如果我把stringify和RequestBody,获得415 Unsupported Media – user184008