我正在使用插件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/