【问题标题】:ajax submitting forms using FormDataajax 使用 FormData 提交表单
【发布时间】:2015-05-06 12:17:06
【问题描述】:

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

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

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

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

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

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

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

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

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

【问题讨论】:

标签: javascript jquery ajax forms multipartform-data


【解决方案1】:

你不能像下面这样创建一个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]);

【讨论】:

  • 所以我不能只传递#signupForm 的某些输入来创建表单数据?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 2013-05-19
  • 2012-11-16
  • 2017-02-04
相关资源
最近更新 更多