【问题标题】:jquery ajax won't send post datajquery ajax不会发送帖子数据
【发布时间】:2014-10-10 12:43:42
【问题描述】:

我正在创建一个 ajax 上传文件。我已经使用 PHP 编写了我的上传代码,它工作正常。问题是当我使用 $.ajax{} 时。我的upload.php 无法接收表单数据。这是我的代码。

function pleaseUpload(){
$(document).ready(function(){
        //var fd=new FormData($("form#form_upload_1"));
        var fd = new FormData();
        fd.append( "file", $("#edit_first [type=file]")[0].files[0]);
        fd.append( "hid", $("#form_upload_1 [type=hidden]").val());
        alert(fd);
        $("#image_1").html("");
        $.ajax( {
          type: 'POST',
          url: 'save_picture.php',
          data: fd,
          processData: false,
          contentType: false,
          cache: false,
          success: function(data){
            $("#image_1").html(data);
          }
        });
});

}

<form id='form_upload_1' enctype='multipart/form-data' name='form_upload_1' method='post' action=''>    
   <div id='edit_first' class='upload_button_wrapper'>
    <input id='edit_first' class='upload_button' type='file' onchange='pleaseUpload()' name='file'/>
    <input type='hidden' name='hid' value="first" />
   </div>
</form>

【问题讨论】:

  • 是因为你把它发布到 save_picture.php 吗?
  • 您将 jQuery 选择器的结果附加到 FormData,对吗?
  • 我已经用这个改变了附加部分,仍然给我同样的错误。 var fd=new FormData($("form#form_upload_1"));
  • 我认为这个 SO 线程将是 elpful:stackoverflow.com/questions/2276463/…
  • 我已将表单数据更改为序列化,但仍然出现相同的错误

标签: jquery ajax file post upload


【解决方案1】:

如果要将表单传递给表单数据对象,则必须在构造函数中进行

var fd = new FormData($("#form_upload_1")[0]);

注意我传递的是 HTMLFormElemnt 而不是封装它的 jQuery 对象。

append 方法采用字符串/Blob/文件,即表单字段数据

var fd = new FormData();
fd.append( "file", $("#edit_first")[0].files[0]);
fd.append( "hid", $("#form_upload_1 [type=hidden]").val());

您还应该知道,html 元素的 id 属性在每个文档中应该是唯一的。

【讨论】:

  • 我已经编辑了我的 javascript。它仍然没有发布到 php 文件中。您认为文件的“onchange”属性会影响脚本的发布吗?
  • @user3422210 这可能是因为您有两个具有相同 id 的元素。尝试使用带有表单构造函数的那个​​,或者修复你的标记。
猜你喜欢
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 2020-09-19
相关资源
最近更新 更多