使用AJAX使用表单发送表单文件时出错

Kon*_*ama 16 javascript php ajax

我正在尝试使用包含CSV文件的AJAX提交表单.因此,想法是使用ajax发送表单,通过生成表并将处理后的表回调回页面,将其处理在不同的文件中.

我有这个,

<form id="uploadXls" action="" method="post" enctype="multipart/form-data">
      <input id="uploaderFile" type="file" class="file"><br/>
      <button type="button" class="btn btn-orange pull-right" name="btnSubmit" id="btnSubmit"><i class="fa fa-download"></i> SHOW FILE CONTENT</button>
</form>
Run Code Online (Sandbox Code Playgroud)

而JavaScript是,

$("#btnSubmit").click(function(){
            $.ajax({
                type: 'POST',
                url: '../../content/maindiv_content/drawing/divpages/process_xls_file.php',
                data: new FormData(this),
                contentType: false,
                cache: false,
                processData: false,
                success: function (response, textStatus, jqXHR) {
                  $("#showFileContentTable").html(data);
                }
            });
        }); 
Run Code Online (Sandbox Code Playgroud)

我在萤火虫中得到这种错误,

TypeError: Argument 1 of FormData.constructor does not implement interface HTMLFormElement.
http://infserver/WeltesTankage/dist/js/jquery-1.10.2.min.js line 4 > eval
Line 14
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?请帮我

Naq*_*ial 41

不要将文件传递给构造函数,而是使用append,如:

var formData = new FormData();
formData.append('file', $('input[type=file]')[0].files[0]);
data:  formData
Run Code Online (Sandbox Code Playgroud)

  • `TypeError:'append'在一个没有实现接口FormData的对象上调用.好 - .. (6认同)
  • 我如何从表单中放入其他数据? (2认同)

Whi*_*One 33

你也可以使用这种方法.

var form = $('form').get(0); 
Run Code Online (Sandbox Code Playgroud)

此代码返回一个jQuery对象($('form'))并将HTML元素传递给FormData(get(0)).

然后在ajax请求中: data: new FormData(form),

  • 这需要更多的赞成!工作完美,非常容易理解!谢谢. (3认同)
  • 是;)你可以重置所有的表单字段,将其添加到成功函数:`$('#FormID')[0] .reset();`这可能也有助于某人:) (2认同)