Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ajax和spring上传表单数据和文件_Ajax_Spring - Fatal编程技术网

使用Ajax和spring上传表单数据和文件

使用Ajax和spring上传表单数据和文件,ajax,spring,Ajax,Spring,我正在使用spring、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.elem

我正在使用spring、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();
            }
如果我为formContent放入requestBody,则会得到415个不受支持的媒体,如果它被删除,则表单值为null

我也可以对多部件和非多部件使用相同的控制器

请告知


谢谢

我们需要在发送js对象之前将其转换为JSON字符串

像这样在ajax调用中更改数据

data: JSON.stringify(formContent), 
然后使用
@RequestBody表单formContent

将Ajax调用中的contentType更改为application/json

如果我将stringify和RequestBody放在一起,在Ajax调用过程中获得415个不受支持的MediaUse application/json作为内容类型,我已经更改了代码,因此它进行了两个Ajax调用,一个用于添加其他数据,另一个用于上传文件。但是当我尝试上传时,我得到了“当前请求不是一个多部分请求”函数uploadFile(form){var formFile=new Object());formFile.uploadFile=$(form.uploadFile)[0]。files[0];$.ajax({type:“POST”,url:${pageContext.request.contextPath}/forms/fileUpload”,数据:formFile,enctype:'multipart/form data',contentType:false,processData:false,success:function(data){alert(“文件上载”);},error:function(){alert('error while request..);});
data: JSON.stringify(formContent),