提交附有文件的表格

时间:2015-07-12 07:55:00

标签: php ajax

我有一个带有ajax的表单,其中包含textarea和upload file字段。我只能提交其中一个。我该如何解决这个问题?

我想将“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);

1 个答案:

答案 0 :(得分:1)

在AJAX调用之前,您发送的数据格式不正确。可能是因为您没有在后端获取值。请尝试这样的事情。

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,