来自jquery.form.js的.ajaxSubmit不使用数据选项

时间:2014-06-12 19:18:37

标签: javascript jquery ajax forms

我正在使用插件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)没有。我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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