我正在使用插件jquery.form.js
,我希望programmatically
提交表单并在其中加入一个文件。我设置的代码和选项与$ .ajax但不是.ajaxSubmit
一起使用。根据{{1}}文档,您可以将任何标准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)
没有。我错过了什么?
谢谢!
答案 0 :(得分:1)
如果检查方法ajaxSubmit
- http://malsup.github.io/jquery.form.js的源代码,您会看到选项的属性data
被序列化/反序列化并转换多次。因此,真正提交的内容很可能与.ajax
调用中发生的内容完全不同。稍后ajaxSubmit
从表单收集文件并以不同方式提交。
基本上,对我来说,使用ajaxSubmit提交时指定数据违背了此插件的概念,该插件被描述为“主要方法,ajaxForm和ajaxSubmit,从表单元素收集信息以确定如何管理提交过程。 “习惯使用ajaxSubmit
的方法是将此方法应用于带控件的表单。