javascript - 使用 FormData ajax 提交表单

标签 javascript jquery ajax forms multipartform-data

我试图仅提交一个非常大的表单的特定输入,并且我想使用 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 没有正确创建。有任何想法吗?提前致谢

最佳答案

您无法创建如下的 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]);

关于javascript - 使用 FormData ajax 提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30076507/

相关文章:

javascript - Nodejs 并行异步调用,但有优先权

javascript - 在选择下拉列表中选择特定选项时添加输入框

javascript - jQuery 单击或 touchstart 事件在移动设备上不起作用

javascript - 获取动态创建的元素的id

javascript - 具有 Primary_key 支持的 Rails 3 自动完成解决方案

javascript - 防止在已经调用时在滚动时调用 ajax

javascript - 如何为每个 URL 显示不同的页面操作图标

javascript - 尝试使用 jQuery/JavaScript 构建递归函数

jquery - 如何在 ASP.NET WebForms 中使用 Ajax

javascript - 使用 javascript/jquery (Google Chrome) 隐藏元素后无法显示元素