【问题标题】:link on page calls a servlet after execution go back to previous page执行后页面上的链接调用 servlet 返回上一页
【发布时间】:2015-08-19 05:27:25
【问题描述】:

我有一个 HTML 页面。在页面上我有一个链接。当用户单击链接时,我正在调用一个在新页面中打开的 servlet。在这个 servlet 上,我正在尝试更新我的数据库。完成更新后,我可以关闭从 servlet 启动的页面。现在我想在原始 HTML 页面上运行一个脚本,但我无法这样做,因为没有触发器/事件来调用该方法。

我该怎么做。 提前致谢!

【问题讨论】:

  • 好吧,您的 servlet 不会“打开一个新页面”,它会执行一个操作并通过显示一个页面或重定向到另一个页面来结束。请澄清。
  • 当用户点击链接时,他会被定向到一个新的 URL(在新的浏览器窗口中打开并且不受我的控制),这是对 servlet 的调用,例如:demo.html 是我当前的 html 页面。当用户点击链接时,将打开一个带有 url 的新窗口:?
  • 尝试使用request.getHeader("Referer")提供的url重定向用户

标签: javascript java html servlets


【解决方案1】:

您可以使用 ajax 来轮询 servlet 执行的后端进程的状态。完成后,您可以执行任何您想要的操作。比如:

var checkStatusTimeout;

function checkStatus(){
    $.ajax({
        type: "GET",
        url: "./getstatus",
        dataType: "text",
        contentType: "application/json; charset=utf-8",
        success: function(status){
            if (status == 'FINISHED'){
                clearTimeout(checkStatusTimeout);
                // execute whatever you want here
            }
        }
    });

    checkStatusTimeout = window.setTimeout("checkStatus()", 5000);
}

当用户点击链接时,您应该调用函数 checkStatus()。

或者您可以将 servlet 使用的子窗口分配给一个变量,并不时检查它以验证窗口是否已关闭。查看 Mark Coleman 在javascript: How Can a parent window know that its child window closed? 上的回答以获取说明。

【讨论】:

  • 让我为我的问题添加更多细节。该链接实际上位于我从 tableau online 嵌入的视图中的工具提示中。每当我单击链接时,都会调用“tableau server”,然后将我重定向到在新选项卡中打开的新页面(我可以控制指向此页面的链接)。我正在从此链接调用 servlet。在 servlet 中,我可以修改我的数据库。现在我想回到上一页然后更新视图。我可以使用 JS 更新视图,但为此我需要在原始页面上运行脚本。
  • 如果我正确理解了您的问题,单击链接时会打开一个新选项卡,而当 servlet 完成时此选项卡会关闭。那正确吗?如果是这样,您可以使用 Mark Coleman 的答案并在第 1 页上运行脚本来检查第 2 页(servlet 选项卡)何时关闭。发生这种情况时,您可以更新视图。这样做会奏效还是我错过了什么?
猜你喜欢
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 2023-03-07
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 2012-12-11
相关资源
最近更新 更多