Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 收到servlet响应时的通知_Java_Javascript_Jquery_Servlets_Notifications - Fatal编程技术网

Java 收到servlet响应时的通知

Java 收到servlet响应时的通知,java,javascript,jquery,servlets,notifications,Java,Javascript,Jquery,Servlets,Notifications,我正在基于Java的web应用程序中使用JasperReports创建报告。每个报告由Servlet生成,并流回到用户。 我对作为附件发回的报告有问题。Excel报告必须以这种方式发回,因为浏览器无法打开Excel文件。此外,生成这些Excel报告需要花费太多时间,因此我在一个新选项卡中打开它们。同时,我在原始选项卡中发布了一条信息消息。类似于“请不要关闭新选项卡” 主要问题是,我需要知道报告何时失败或成功。更具体地说,我需要知道响应是否已被发回,我需要知道该响应是报告还是错误,现在我正在发回两

我正在基于Java的web应用程序中使用JasperReports创建报告。每个报告由Servlet生成,并流回到用户。 我对作为附件发回的报告有问题。Excel报告必须以这种方式发回,因为浏览器无法打开Excel文件。此外,生成这些Excel报告需要花费太多时间,因此我在一个新选项卡中打开它们。同时,我在原始选项卡中发布了一条信息消息。类似于“请不要关闭新选项卡”

主要问题是,我需要知道报告何时失败或成功。更具体地说,我需要知道响应是否已被发回,我需要知道该响应是报告还是错误,现在我正在发回两个不同的cookie。如果失败,我需要显示错误消息,否则我需要删除信息消息

我尝试使用jQuery.post调用servlet,但是下载对话框没有出现。因此我使用表单。不管发生什么,服务器都会发回一个cookie。在客户端,我正在等待cookies,当我收到cookies时,我决定做什么。正如一篇伟大的文章所描述的那样,这种方法非常有效。
但是,如果客户端禁用cookies,我可以采取什么方法呢?

好吧,如果有人对这个问题感兴趣,下面是我最终如何解决这个问题的。我使用window.open函数,而不是使用表单将请求发送到Servlet。我在一个新选项卡中打开它。然后我设置了一个间隔来检查两件事

如果新窗口已关闭newWindow.closed,则我知道报告已成功生成 如果newWindow.document.readyState已完成,则表示报告失败,因为如果报告失败,我将返回内联响应。 在我的例子中,这种方法的一个优点是禁用cookies,即当出现异常时,我可以关闭新窗口


注意:在IE8中,关闭窗口后,newWindow.document变得不可访问,权限被拒绝。要检查这一点,我使用typeof newWindow.document!='未知。

我不理解这一部分:我尝试使用jQuery.post调用servlet,但是没有下载框。你指的是什么下载框?我指的是如果响应是附件,就会出现的下载对话框。我会改变这部分的question@claymore1977:无法使用纯JavaScript/Ajax下载显示另存为对话框的附件文件,因为JS没有任何显示另存为对话框的功能。它必须使用完全同步请求进行。