2015-07-12 40 views
1

我有一个包含textarea和上传文件字段的带有ajax的表单。我只能提交其中的一个。我该如何解决这个问题?附带文件的提交表格

我想发送“info”+“filesData”到服务器。请指教。

AJAX:

$(function() { 
    $("#submit").click(function() { 

    var file_data = $('#files').prop('files')[0]; 
    var form_data = new FormData();     
    form_data.append('file', file_data); 
    var files_data = form_data; 
    alert(files_data);  


    var act = 'add'; 
    var $form = $("#addCommentForm"); 
    var info = $form.serialize(); 
    info += '&act=' + act ; 
    alert(info); 

    $.ajax({ 
      type: "POST", 
      url: "ajax/addPost.php", 

      dataType: 'text', // what to expect back from the PHP script, if anything 
      cache: false, 
      contentType: false, 
      processData: false, 

      data: files_data, 
      success: function(data) 
      { 
      // alert(data); // show response from the php script. 
       $('#commentsBox').html(data); 
       $("#addCommentForm")[0].reset(); 

      } 

     }); 

    return false; 
}); 
}); 

HTML:

<form class="form-horizontal" action='#' method="post" id="addCommentForm" enctype="multipart/form-data"> 

    <div class="form-group"> 
     <div class="col-md-8 col-xs-12"> 
      <textarea class="form-control" name="post[text]"></textarea> 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-md-8 col-xs-12"> 
      <input type="file" class="form-control" name="file" id="files"> 
     </div> 
    </div>         
    <div class="form-group"> 
     <label class="col-xs-2 control-label" for="textinput"></label> 
     <div class="col-md-8 col-xs-12"> 
      <a class="btn btn-primary" id="submit">submit</a> 
     </div> 
    </div>          
</form> 

PHP

print_r ($_FILES); 
print_r ($_POST); 
+0

你得到什么输出? – Varun

回答

1

AJAX调用之前,要发送的数据是不正确的format.Probably是这样的原因你没有得到后端的价值。尝试这样的事情。

var file_data = $('#files').prop('files')[0]; 
var form_data = new FormData();     
form_data.append('file', file_data); 
var files_data = form_data; 

var act = 'add'; 
form_data.append('act', act); 
form_data.append('textarea', $("#addCommentForm").find("textarea").val()); 

而在Ajax调用,将数据传递到应,

data: form_data,