Java 如何在ajax post调用中发送不同类型的数据

Java 如何在ajax post调用中发送不同类型的数据,java,javascript,jquery,ajax,json,Java,Javascript,Jquery,Ajax,Json,我有一个json对象,在同一个javascript中,我有两个文件上传对象来上传一个文件。当我尝试执行此操作时,请求不会发送到控制器。我试过这样做 data: {"jsonString":jsonString, "fd":"fd", "fd1":"fd1"}, 有人知道用json对象和file对象实现这个功能的其他方法吗?我只得到先前上传的文件名,但现在在这篇文章中,我想把它保存在一个特定的文件夹中 编辑: 在非表单提交中,我通过这个json对象值更新div内容,所以提交按钮不在div或jsp

我有一个json对象,在同一个javascript中,我有两个文件上传对象来上传一个文件。当我尝试执行此操作时,请求不会发送到控制器。我试过这样做

data: {"jsonString":jsonString, "fd":"fd", "fd1":"fd1"},
有人知道用json对象和file对象实现这个功能的其他方法吗?我只得到先前上传的文件名,但现在在这篇文章中,我想把它保存在一个特定的文件夹中

编辑: 在非表单提交中,我通过这个json对象值更新div内容,所以提交按钮不在div或jsp表单的对话框按钮中,所以我从它们的对话框中调用一个java脚本,在这里,我有json值,并且我得到了要发送给控制器的所有三个文件对象

请参考我提出的问题

我的控制器逻辑不确定需要写什么我刚试过

  @RequestMapping(value = "/submitAllInfo", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public @ResponseBody ModelAndView insertAllStepDetails(@RequestParam CommonsMultipartFile[] fileUpload,@RequestParam CommonsMultipartFile[] Uploadfile1,@RequestParam("UserName") String UserName) throws Exception{
    System.out.println("in submit controller !!!");
    System.out.println("ffffff"+UserName);

    return new ModelAndView("success");

}
编辑:::

我的js函数所有div都是一种形式:

<script type="text/javascript">
 function submitFormNew(){

alert("in final submission form");
 var UserName=$('#uname').val();
 alert(UserName);


var fileInput=document.getElementById("Uploadfile"); 
alert(fileInput);

var file=fileInput.files[0];
alert(file);
var formdata = new FormData();
formdata.append("fileUpload",file);

 var fileInput1=document.getElementById("Uploadfile1"); 

var file1=fileInput1.files[0];

formdata.append("Uploadfile1",file1); 

formdata.append("UserName",UserName);

$.ajax({
    url:contextPath +"/submitAllInfo",
    type: 'POST',
    data: formdata,
    async: false,
    success: function (data) {
        alert("in success");
       alert(data);
    },
      error: function (){
        alert("error has cocured");
     },
     cache: false

     });
     }
   </script>

函数submitFormNew(){
警报(“最终提交格式”);
var UserName=$('#uname').val();
警报(用户名);
var fileInput=document.getElementById(“上传文件”);
警报(文件输入);
var file=fileInput.files[0];
警报(文件);
var formdata=new formdata();
formdata.append(“文件上传”,文件);
var fileInput1=document.getElementById(“Uploadfile1”);
var file1=fileInput1.files[0];
追加(“上传文件1”,文件1);
formdata.append(“用户名”,用户名);
$.ajax({
url:contextPath+“/submitAllInfo”,
键入:“POST”,
数据:formdata,
async:false,
成功:功能(数据){
警惕(“成功”);
警报(数据);
},
错误:函数(){
警报(“发生错误”);
},
缓存:false
});
}

在表单中尝试以下操作:

明白我的意思了吗?只需将表单放入对话框中,在从对话框移动时将数据添加到jsonObject。最后,您可以显示此内容,然后允许用户提交

<form id="data" method="post" enctype="multipart/form-data">
    <div class='dialog'>
       <input type="text" name="foo" value="bar" />
    </div>
    <div class='dialog'>
       <input name="image" type="file" />
    </div>
    <div class='dialog'>
        <input name="frroo" type="file" />
        <button>Submit</button>
    </div>
</form>

$("form#data").submit(function(){
    var formData = new FormData($(this)[0]);
    colsole.log(formdata);
    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
});

提交
$(“表单数据”).submit(函数(){
var formData=新formData($(此)[0]);
colsole.log(formdata);
$.ajax({
url:window.location.pathname,
键入:“POST”,
数据:formData,
async:false,
成功:功能(数据){
警报(数据)
},
cache:false,
contentType:false,
processData:false
});
返回false;
});

在表单中尝试以下操作:

明白我的意思了吗?只需将表单放入对话框中,在从对话框移动时将数据添加到jsonObject。最后,您可以显示此内容,然后允许用户提交

<form id="data" method="post" enctype="multipart/form-data">
    <div class='dialog'>
       <input type="text" name="foo" value="bar" />
    </div>
    <div class='dialog'>
       <input name="image" type="file" />
    </div>
    <div class='dialog'>
        <input name="frroo" type="file" />
        <button>Submit</button>
    </div>
</form>

$("form#data").submit(function(){
    var formData = new FormData($(this)[0]);
    colsole.log(formdata);
    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
});

提交
$(“表单数据”).submit(函数(){
var formData=新formData($(此)[0]);
colsole.log(formdata);
$.ajax({
url:window.location.pathname,
键入:“POST”,
数据:formData,
async:false,
成功:功能(数据){
警报(数据)
},
cache:false,
contentType:false,
processData:false
});
返回false;
});

在表单中尝试以下操作:

明白我的意思了吗?只需将表单放入对话框中,在从对话框移动时将数据添加到jsonObject。最后,您可以显示此内容,然后允许用户提交

<form id="data" method="post" enctype="multipart/form-data">
    <div class='dialog'>
       <input type="text" name="foo" value="bar" />
    </div>
    <div class='dialog'>
       <input name="image" type="file" />
    </div>
    <div class='dialog'>
        <input name="frroo" type="file" />
        <button>Submit</button>
    </div>
</form>

$("form#data").submit(function(){
    var formData = new FormData($(this)[0]);
    colsole.log(formdata);
    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
});

提交
$(“表单数据”).submit(函数(){
var formData=新formData($(此)[0]);
colsole.log(formdata);
$.ajax({
url:window.location.pathname,
键入:“POST”,
数据:formData,
async:false,
成功:功能(数据){
警报(数据)
},
cache:false,
contentType:false,
processData:false
});
返回false;
});

在表单中尝试以下操作:

明白我的意思了吗?只需将表单放入对话框中,在从对话框移动时将数据添加到jsonObject。最后,您可以显示此内容,然后允许用户提交

<form id="data" method="post" enctype="multipart/form-data">
    <div class='dialog'>
       <input type="text" name="foo" value="bar" />
    </div>
    <div class='dialog'>
       <input name="image" type="file" />
    </div>
    <div class='dialog'>
        <input name="frroo" type="file" />
        <button>Submit</button>
    </div>
</form>

$("form#data").submit(function(){
    var formData = new FormData($(this)[0]);
    colsole.log(formdata);
    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
});

提交
$(“表单数据”).submit(函数(){
var formData=新formData($(此)[0]);
colsole.log(formdata);
$.ajax({
url:window.location.pathname,
键入:“POST”,
数据:formData,
async:false,
成功:功能(数据){
警报(数据)
},
cache:false,
contentType:false,
processData:false
});
返回false;
});

var formdataAJX=新FormData();
var fileUpload1=$('#file1').val();
if(fileUpload1!=undefined&&fileUpload1!=null){
formdataAJX.append(“file1”,fileUpload);
}
var fileUpload2=$('#file2').val();
if(fileUpload2!=未定义&&fileUpload2!=null){
formdataAJX.append(“file2”,fileUpload);
}
$.ajax({
url:contextPath+“/submitAllInfo”,
键入:“POST”,
数据:formdataAJX,
async:false,
成功:功能(数据){
警报(数据);
},
缓存:false
});
在您的
控制器中
将您的文件作为
file1
file2
获取,您可以在formData对象中附加其他参数,在我的示例中是
formdataAJX

您应该使用
formdata.append()
方法添加表单参数,如
input
select
file
等…


var formdataAJX=新FormData();
var fileUpload1=$('#file1').val();
if(fileUpload1!=undefined&&fileUpload1!=null){
formdataAJX.append(“file1”,fileUpload);
}
var fileUpload2=$('#file2').val();
if(fileUpload2!=未定义&&fileUpload2!=null){