javascript - jquery.form.js 中的 .ajaxSubmit 不使用数据选项

标签 javascript jquery ajax forms

我正在使用插件jquery.form.js,并且我想以编程方式提交表单并包含一个文件。我设置的代码和选项适用于 $.ajax,但不适用于 .ajaxSubmit。根据 jquery.form.js 文档,您可以将任何标准 $.ajax 选项传递给 .ajaxSubmit 但我似乎无法得到让它工作。如果可能的话,我想使用.ajaxSubmit,这样我就可以利用它提供的一些其他功能。

$(document).ready(function() {
    $('#file-form').submit(function(event) {
        event.preventDefault();
        var form = $("<form style='display:none;' method='post' action='video_upload.php' enctype='multipart/form-data'></form>");
        var fd = new FormData();    
        fd.append('uploadedfile', $('#file')[0].files[0]);

        var options = {
            url: 'video_upload.php',
            data: fd,
            processData: false,
            contentType: false,
            type: 'POST',
            beforeSend: function(xhr){
                alert('start');
            },
            success: function(data){
                alert(data);
            }
        };
        $.ajax(options);
        //form.ajaxSubmit(options);

        return false;
    }); 

});

运行 $.ajax(options) 有效,但 form.ajaxSubmit(options) 无效。我错过了什么?

谢谢!

最佳答案

如果你检查方法ajaxSubmit的源代码 - http://malsup.github.io/jquery.form.js你可以看到选项的属性data被序列化/反序列化和转换了多次。因此,真正提交的内容很可能与 .ajax 调用中发生的情况有很大不同。稍后,ajaxSubmit 从表单收集文件并以不同方式提交它们。

基本上,对我来说,使用 ajaxSubmit 提交时指定数据违背了该插件的概念,该插件被描述为“主要方法 ajaxForm 和 ajaxSubmit,从表单元素收集信息以确定如何管理提交过程。 ”使用 ajaxSubmit 的惯用方法是将此方法应用于带有控件的表单。

关于javascript - jquery.form.js 中的 .ajaxSubmit 不使用数据选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192288/

相关文章:

javascript - 如何从客户端将参数添加到 HttpContext.Request.Form 中

jquery - 选择时将类别添加到 radio 的标签中,而未选择时将其删除?

asp.net - 为什么 ajax 加载器图像总是使用 jquery 和 asp.net 显示

jquery - 从 js.erb 文件中注入(inject) form_for @model?

javascript - 无法将 ejs 值获取到脚本变量中?

javascript - 在字符串替换中使用正则表达式的一句话得到的字符数

javascript - 我想使用 javascript regex 在句子中找到一个单词(包括特殊字符)匹配

javascript - 在 Javascript 数组中对连续的重复值进行分组

javascript - 点击下面的一个div元素?

javascript - 当 Javascript 文件包含在远程站点上时,是否可以对驻留在托管 Javascript 文件的服务器上的文件发出 AJAX 请求?