Javascript 使用FormData提交表单的ajax

Javascript 使用FormData提交表单的ajax,javascript,jquery,ajax,forms,multipartform-data,Javascript,Jquery,Ajax,Forms,Multipartform Data,我试图只提交一个非常大的表单的特定输入,我想使用ajax来实现这一点。我有这个,它工作得很好。这将在#someDiv内提交所有输入 然后我记得其中一些输入是文件输入,所以这将不起作用。我做了一些研究,发现使用FormData是一种可行的方法: $(".save").click(function () { dat = new FormData($('#someDiv').find('input')); $.ajax({ type: "POST",

我试图只提交一个非常大的表单的特定输入,我想使用ajax来实现这一点。我有这个,它工作得很好。这将在#someDiv内提交所有输入

然后我记得其中一些输入是文件输入,所以这将不起作用。我做了一些研究,发现使用FormData是一种可行的方法:

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

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

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

但是这个函数不起作用,success函数正在启动,但是没有保存任何内容,所以我假设FormData没有正确创建。有什么想法吗?提前感谢

您无法按如下方式创建formData

dat=newformdata($('someDiv')。查找('input')

您需要将Javascript表单引用传递给表单,例如,如果表单的id为singupForm,则按如下操作

dat=newformdata($('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]);

无法按如下方式创建formData

dat=newformdata($('someDiv')。查找('input')

您需要将Javascript表单引用传递给表单,例如,如果表单的id为singupForm,则按如下操作

dat=newformdata($('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]);

你试过serialize()吗?我想你对find返回的内容是错误的。我只在包含图片、文件等数据时才使用
FormData
。。。如果您想创建一个新的FormData,它应该是一个表单而不是常规数据,请使用
newFormData($('Form')[0])
。如果要发送字符串,请使用
$('form')。serialize()
是否尝试serialize()?我认为您在查找结果时出错。我仅在包含图片、文件等数据时使用
FormData
。。。如果您想创建一个新的FormData,它应该是一个表单而不是常规数据,请使用
newFormData($('Form')[0])
。如果要发送字符串,请使用
$('form').serialize()
,这样我就不能只传递#signupForm的某些输入来创建formdata?也不能只传递#signupForm的某些输入来创建formdata?