【发布时间】:2012-01-10 10:57:47
【问题描述】:
我有一个 HTML 表单。提交后,它会创建一个 Excel 文件并返回它。
在所有其他表单上,我的加载屏幕显示在 onSubmit 函数中并隐藏在 document.ready 函数中,但是当返回文件时,没有 document.ready,因此我的加载屏幕不会隐藏。
我尝试了带有回调函数的 jQuery 表单插件,但是这样我无法在其他表单上正常显示响应页面。带有回调的$.post() 函数也是如此。
我只想在表单提交完成后调用我的loadingScreenHide 函数,其余的保持正常。
有什么想法吗?
谢谢。
我试过的代码是这样的: 使用表单插件回调函数(返回 true;似乎不起作用): $('form').ajaxForm(function () {activateDeactivateScreen('hidden'); return true; });
或者用 post 代替: $.post($('form').attr('action'), $('form').serialize(), function () {activateDeactivateScreen('hidden'); return true; });
两个主要问题是当我使用正常提交时我没有回调,当我收到回调时我没有正常提交/页面加载
我也有改变我的 java 服务器页面以临时保存文件并重定向到下载的想法,但这样我将不得不更改大约 20-30 个 java 源,所以我更喜欢 javascript 解决方案
【问题讨论】:
-
您能否发布您的代码,以便我们查看您使用的流程。
-
我假设您将表单数据发布到 PHP 脚本或任何其他服务器端 CGI。它处理您的数据并返回一个应用程序/excel mimetype,这会强制下载,因为浏览器无法解析 exel 文档。因此,您发送表单的实际页面甚至不会改变。据我所知,您必须通过 AJAX 发送您的数据,并将您的 exel 文件临时保存在您的服务器上,然后返回一个指向您的 AJAX 调用成功方法的链接。这个链接可以用
document.location = link;打开,然后重新强制下载。 -
@silvinci:我从许多不同的页面(20-30 个不同的 servlet)获取这些 excel 文件,因此更改 java 源代码需要大量工作
标签: jquery