ajax使用FormData提交表单

sha*_*876 0 javascript forms ajax jquery multipartform-data

我试图只提交一个非常大的表单的特定输入,我想使用ajax这样做.我有这个,它工作正常.这将在#someDiv中提交所有输入.

$(".save").click(function () {

    dat = $.param($('#someDiv').find('input'));

    $.ajax({
        type: "POST",
        url: "...",
        data: dat,
        success: function(data) {
            //success
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

然后我记得其中一些输入是文件输入,所以这不起作用.我做了一些研究,发现使用FormData是要走的路:

$(".save").click(function () {

    dat = new FormData($('#someDiv').find('input'));

    $.ajax({
        type: "POST",
        url: "...",
        data: dat,
        processData: false,
        contentType: false,
        success: function(data) {
            //success
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

但是这个函数不起作用,成功函数正在触发,但没有任何东西可以保存,所以我假设FormData没有正确创建.有任何想法吗?提前致谢

san*_*eev 5

您无法创建如下的formData

dat = new FormData($('#someDiv').find('input'));

你需要将Javascript表单引用传递给表单,例如,如果表单的id是,singupForm然后像下面这样做

dat = new FormData($('#singupForm')[0]);

编辑

如果您只想添加选定的字段,可以按照以下方式进行操作

    var formData = new FormData();
    formData.append("variable", "First Value");
    formData.append("integerVariable", 987654321); 

    // For file, remember to pass the JavaScript reference
    formData.append("userfile", fileInputElement.files[0]);
Run Code Online (Sandbox Code Playgroud)