Javascript 使用Ajax将文件发送到api

Javascript 使用Ajax将文件发送到api,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图使用ajax将文件发送到api,但在下面提到的两种情况下,表单数据始终为空 <form id="myformdoc"> <input type="file" size="45" name="file" id="file"> </form> <script> $('#file').on(&quo

我试图使用ajax将文件发送到api,但在下面提到的两种情况下,表单数据始终为空

<form id="myformdoc">
    <input type="file" size="45" name="file" id="file">
</form>

           <script>
          $('#file').on("change", function () {
        
          // var formdata = new FormData($('form').get(0));
          
          let myForm = document.getElementById('myformdoc');
          let formData = new FormData(myForm);

    
        $.ajax({
            url: url,
            type: 'POST',
            data: formdata ,
            cache: false,
            processData: false,
            contentType: false,
            success: function (color) {
                ;
            },
            error: function () {
                alert('Error occured');
            }
        });
    
});
</script>
知道为什么表单数据总是空的吗?

尝试在contentType参数中添加多部分/表单数据。

尝试在contentType参数中添加多部分/表单数据。

您需要使用 将文件添加到formData函数

将jQuery代码更改为下面的代码,它将正常工作,您可以在后端获取文件以保存它们

如果表单中有其他输入,如果愿意,也可以附加它们

formData.append('file', $(this)[0].files[0])
演示:

$'file'.onchange,函数{ //初始化formData 设formData=newformdata; console.log$this[0]。文件 formData.append'file',$this[0]。files[0]//将文件追加到文件formData $.ajax{ url:'url', 键入:“POST”, 数据:formData, cache:false, processData:false, contentType:false, 成功:functioncolor{ console.logcolor; }, 错误:函数{ 警报“发生错误”; } }; }; 你需要使用 将文件添加到formData函数

将jQuery代码更改为下面的代码,它将正常工作,您可以在后端获取文件以保存它们

如果表单中有其他输入,如果愿意,也可以附加它们

formData.append('file', $(this)[0].files[0])
演示:

$'file'.onchange,函数{ //初始化formData 设formData=newformdata; console.log$this[0]。文件 formData.append'file',$this[0]。files[0]//将文件追加到文件formData $.ajax{ url:'url', 键入:“POST”, 数据:formData, cache:false, processData:false, contentType:false, 成功:functioncolor{ console.logcolor; }, 错误:函数{ 警报“发生错误”; } }; };
在表单标记add enctype=multipart/form dataAhmed Sunny中,我尝试了相同的问题,formdata总是空的{}您尝试通过id=myformdoc获取表单,但您的表单没有idin表单标记add enctype=multipart/form dataAhmed Sunny,我尝试了相同的问题,formdata总是空的{}您尝试通过id=myformdoc获取表单,但是您的表单没有id值得一提的是,new FormData'id\u of the_表单'将隐式添加表单中的所有表单字段值得一提的是new FormData'id\u of the_表单'将隐式添加表单中的所有表单字段