【问题标题】:Posting form data and file via ajax通过 ajax 发布表单数据和文件
【发布时间】:2021-03-30 01:37:28
【问题描述】:

文本发布正常,但文件不正确。
我知道 mail-request.php 中的 php 可以正常工作,因为我使用 html 表单对其进行了测试。
以下是我目前所拥有的:

$(document).ready(function() {
  $('#btn-quote').click(function() {
    alert("WORKING");
    event.preventDefault();
    $.ajax({
      url: "mail-request.php",
      type: "POST",
      data: new FormData(this),
      contentType: false,
      cache: false,
      processData: false,
      beforeSend: function() {
        $('#load').html('<img src="load2.gif" width="50">');
        $("#err").fadeOut();
      },
      success: function(data) {
        //alert("AJAX: "+data);
        var f_data = data;
        $('#status').text(f_data);
      },
      error: function(errorThrown) {
        $('#status').text("DIDN'T WORK!");
      }
    });
  });
});

这是表格:

<form id ="request-form" name="request-form" action="mail-request.php" method="POST" enctype="multipart/form-data">
<input id="upload" type="file" name="fileUpload" >
      <!--</div>--> 
    </div>
  </div>
  <div class="md-form">
    <div class="md-form">
      <label for="fname" class="request-label">First Name</label>
      <input type="text" id="fname" name="fname" class="form-control">
    </div>
  </div>
<div class="center-on-small-only"> <a class="btn btn-primary" id="btn-quote" onClick="validateRequestForm()">Submit Request</a> </div>
  <div class="status" id="status"></div>
</form>

【问题讨论】:

  • 请张贴表格。您没有向表单数据添加任何文件

标签: jquery ajax forms


【解决方案1】:

您必须将表单传递给 FormData 对象的构造函数,您正在传递一个 DIV,就像在 div 点击处理程序中一样。
也只是为了确保事件变量可用,将其作为参数添加到事件处理函数

$(document).ready(function() {
  $('#btn-quote').click(function(event) {
    alert("WORKING");
    event.preventDefault();
    $.ajax({
      url: "mail-request.php",
      type: "POST",
      data: new FormData($('#request-form')[0]),
      contentType: false,
      cache: false,
      processData: false,
      beforeSend: function() {
        $('#load').html('<img src="load2.gif" width="50">');
        $("#err").fadeOut();
      },
      success: function(data) {
        //alert("AJAX: "+data);
        var f_data = data;
        $('#status').text(f_data);
      },
      error: function(errorThrown) {
        $('#status').text("DIDN'T WORK!");
      }
    });
  });
});

【讨论】:

  • 1000 谢谢!我正在使用 serializeArray() 将数据放入变量并使用数据:myDataVar。那就是我出错的地方。上面的脚本中有一个小错误。它应该是数据:new FormData($('#request-form')[0])。它只是缺少#。
猜你喜欢
  • 2016-02-19
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
相关资源
最近更新 更多