我正在使用插件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
的惯用方式是将此方法应用于带有控件的表单。