从表单构建FormData对象

时间:2014-05-08 23:50:05

标签: javascript php jquery ajax multipartform-data

我的FormData对象不会从我的页面表单元素中获取数据。当我在PHP文件中执行var_dump($_POST)时,附加的数据会经过并显示,但表单数据不存在。没有附加,它只是一个空数组。

使用Javascript:

$(function() {
    $("form").on("submit", function() {
        var formData = new FormData($("#form")[0]);
        formData.append("Hello world", "This is a test");
        $.ajax({
            url: "sub/addCrane.php",
            type: 'POST',
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
        })
        .done(function(data) {
            $("#form").append(data);
        });
    });
});

HTML表单:

<form id="form" enctype="multipart/form-data" action="#">

    <p class="inline">Crane Model: </p><input type="text" id="model"><br />
    <p class="inline">Crane Brand: </p><input type="text" id="brand"><br />
    <p class="inline">Crane type (ie. Crawler, Tower, Mobile): </p><input type="text" id="type"><br />
    <p class="inline">Image of crane: </p><input type="file" id="image">
    <input type="submit" id="submit">

</form>

2 个答案:

答案 0 :(得分:0)

您的问题是,您在输入代码中使用id而不是name,这并不能让JQuery与它们相处,所以它会忽略它们。此外,它不常见,PHP也不是非常喜欢它:)

干杯!

答案 1 :(得分:0)

尝试下一步:

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

var formData = new FormData();
jQuery.each($('#image')[0].files, function(i, file) {
    formData.append('file-'+i, file);
});

        $.ajax({
            type: "POST",
            url: 'sub/addCrane.php',
            data: formData,
            success: function (answer) {
                console.log(answer);
            }
        });
        return false;
    });