如何传递表单数据数组

时间:2018-06-08 08:28:29

标签: javascript jquery arrays

如何将formData数组传递给php加载文件。如何将所有文件输入作为数组传递或迭代它?

$(document).ready(function(){
    $('.add_more').click(function(e){
        e.preventDefault();
        $(this).before("<input name='file[]' class='file' type='file' /> <br> <input type='button' class='es' name='es' value='Upload This File' />");
    });

    $('.es').click(function (e) {
        e.preventDefault();

        var form = $('.form');
        var formData = new FormData(form);

//                                             |        |
        formData.append('file', $('.file')[0].files[0]);


        $.ajax({
            url: 'lib/upload.php',
            type: 'post',
            data: formData,
            contentType: false,
            processData: false,
            cache: false,
            success: function (data) {
                $('#here').html(data);
            }
        });
    });
});

和html(php)文件:

<form id="form" action="" enctype="multipart/form-data" method="post">
    <input name="file[]" class="file" type="file" />
    <input type="button" name="es" class="es" value="Upload This File" />
    <br><br>
    <button class="add_more">Add More Files</button>
</form>

如何将所有文件输入作为数组传递?

1 个答案:

答案 0 :(得分:0)

首先,你没有文件输入的多个属性,你正在使用js中的类选择表单,而不是类,你的表单标签上有id。

<form id="form" action="" enctype="multipart/form-data" method="post">
    <input name="file[]" multiple class="file" type="file" />
    <input type="button" name="es" class="es" value="Upload This File" />
    <br><br>
    <button class="add_more">Add More Files</button>
</form>

,其次是当表单中存在文件输入时,为该表单创建的FormData已经包含所有数据,包括文件,因此您不必手动推送它。所以只需发送如下。

$(document).ready(function(){
    $('.add_more').click(function(e){
        e.preventDefault();
        $(this).before("<input name='file[]' class='file' type='file' /> <br> <input type='button' class='es' name='es' value='Upload This File' />");
    });

    $('.es').click(function (e) {
        e.preventDefault();

        var form = $('#form');
        var formData = new FormData(form[0]);    

        $.ajax({
            url: 'lib/upload.php',
            type: 'post',
            data: formData,
            contentType: false,
            processData: false,
            cache: false,
            success: function (data) {
                $('#here').html(data);
            }
        });
    });
});