这里有数百个这样的问题,但是我搜索过并搜索过但我无法找到问题的答案。我的目标是提交整个表单,包括其中的任何潜在文件。这是我的非功能性代码:
$(target + " form.dialog").submit(function(){
var data = new FormData($(this));
$.ajax({
url: $(this).attr("action"),
type: "post",
data: data,
cache: false,
contentType: false,
processData: false,
success: function(data){
// Do stuff..
}
});
return false;
});
所以,基本上,我没有找到使用$(this)作为FormData()类参数的jQuery代码。根据规范,应该能够向类提交“表单元素”,并且我假设$(this)实际上并没有这样做。大多数示例如下所示:
var data = new FormData($('#myform')[0]);
但是我的实现处理了jQuery对话框()中加载的任何表单,它是通过ajax从服务器加载的HTML,所以我不能事先知道表单具体指向它的ID。
即使我这样称呼它:
var data = new FormData($(target + " form.dialog")[0]);
没有任何事情发生,或者更确切地说,没有提交任何参数。这是一个jQuery版本的问题吗? “target”变量始终是“#dialog”形式的ID,我是否需要以其他方式查找和检索表单元素?
当我这样做时:
console.log(typeof($(target + " form.dialog")[0]))
返回“object”,我假设它是FormData()类的错误类型...感谢任何帮助。
答案 0 :(得分:2)
FormData
是普通的JS,它不接受jQuery对象而只接受普通的JS表单,只需使用:
var data = new FormData(this);
$.ajax({
url: $(this).attr("action"),
type: "post",
data: data,
....
});