2010-02-05 44 views
2

我有一个模式窗口向用户呈现表单。该表单还包含一个或多个文件上传。因此我无法使用ajax提交表单。表单提交回调(使用jQuery)

目前我正在做一个提交按钮的标准提交。当表单被提交时(通常需要几秒钟),生成PDF并返回下载(即Content-Disposition:附件头)以强制下载。一旦表格数据的上传完成,我需要关闭模态窗口。如果我直接调用close方法,提交永远不会完成,并且文件下载永远不会触发(我认为这是因为模式窗口已从DOM中删除)。我可以设置超时时间,但可能有n个图像,因此上传所需的时间是不可预知的(并且与上传次数有关)。

我已经看过jQuery表单插件(http://jquery.malsup.com/form/#file-upload),但显然它使用iframe来上传文件,所以我不确定它是否会实现我所需要的。

感谢您的任何帮助,

Dom。

回答

0

重读该问题后重写。以下是我想尝试的:

  1. 将表单序列化并使其成为对话框的返回值,即将数据传回页面。
  2. 关闭对话框
  3. 提交的序列化形式
+0

该文件是流式传输的,所以我无法在文件上执行GET操作。我知道你不能用ajax做这件事,这就是我最初问的原因。 我明白理解需要在回调中调用close,它更关心的是当文件下载开始时是否有可以绑定的窗口或文档事件。 我测试了表单插件,但后提交回调从未被触发。预提交执行正常,表单提交罚款,文件下载,但在表单提交后没有任何反应(即没有提交回调)。 – Dominic 2010-02-05 02:14:14

+0

啊,重读这个问题,并意识到你是在做一个同步POST。我想我刚刚跳过第一句话。现在我明白了为什么你想要暂停。编辑回复。 – 2010-02-05 03:19:57

+0

无法序列化文件对象:( – Dominic 2010-02-05 04:00:27

1

您提到的Form plugin应该工作 - 为什么你怀疑它不会?

+0

我用表格插件上传自己。隐藏的iframe定位是“ajax”上传的标准做法。 – 2010-02-05 01:42:36

+0

我调试了表单插件,我可以得到回调工作,但模式被破坏得太快,所以请求永远不会完成,文件不下载 – Dominic 2010-02-05 05:07:55

+0

@Dominic你不能隐藏模式而不是销毁它吗? – 2010-02-06 23:23:12