使用ajax提交multipart / form-data时,文件为空

时间:2014-07-11 13:08:03

标签: javascript jquery ajax forms

使用ajax提交multipart / form-data时遇到问题。

HTML code:

<form id='form_foto' method='post' enctype='multipart/form-data'>
   <input type='hidden' id='id_noticia' name='id_noticia' value='"+id_noticia+"' />
   <input name='foto[]' type='file' multiple />
</form>

jQuery和Ajax:

          $("#form_foto").submit(function(e){

                $("#form_foto").append("<br />Aguarde...");

                var formData = new FormData(this);

                $.ajax({
                    url: "/PortalGBD/services",
                    type: "POST",
                    data: formData,
                    async: false,
                    dataType: "multipart/form-data",
                    processData: false,
                    contentType: false,
                    success: function(resposta){
                        alert(resposta);
                    }
                });
                e.preventDefault(); 
            });
            $("#form_foto").submit();
            self.close();
        }

请求文件输入为空:

----------------------------- 65942623427134 内容处理:表格数据;名称=&#34; id_noticia&#34;

336 ----------------------------- 65942623427134 内容处理:表格数据;命名=&#34;照片[]&#34 ;;文件名=&#34;&#34; Content-Type:application / octet-stream

----------------------------- 65942623427134 -

请帮我解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:0)

请将代码var formData = new FormData(this);中的一行更改为var formData = new FormData($(this)[0]);,然后进行检查。

当我们创建FormData的实例时,我们传递form [0]而不是form。它的意思是实际的表单元素,但不是jQuery选择器。