【问题标题】:jQuery loading screen on form submit with file response带有文件响应的表单提交上的 jQuery 加载屏幕
【发布时间】: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


【解决方案1】:

ajaxSetup中指定一个完整的回调

$.ajaxSetup({
complete:function(){
$("#loadingScreenID").hide();
}
});

以及之后的常规帖子

$.post();

【讨论】:

  • 当我使用 $.post() 函数时,加载屏幕可以正常工作,但文件未显示以供下载,或者我的其他表单未重定向到其响应页面。这是怎么做到的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多