我正在使用插件jquery.form.js,我想programmatically提交表单并包括一个文件。我已使用$ .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的惯用方式是将此方法应用于带有控件的表单。

10-04 14:18