从表单构建FormData对象


Building FormData object from form

我的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>

你的问题是你使用id而不是name在你的输入标签,这不会让JQuery玩得很好,所以它忽略了他们。而且,这不是常见的做法,PHP也不喜欢:)

干杯!

再试一次:

$("#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;
    });