【问题标题】:How can I redirect a url that I am pointed to after clicking submit?单击提交后如何重定向指向的网址?
【发布时间】:2011-11-22 03:13:45
【问题描述】:

我有一个 html 表单,一旦单击“提交”按钮,它就会提交给 Servlet。提交后,Servlet 重定向到一个固定的 url,即

http://siteforServlets.com/Servlet/Servlet

然后该站点显示如下所示的 xml 报告:

对不起,我无法发布图片,没有足够的代表,所以我在这里上传了直接链接: http://img836.imageshack.us/img836/3343/sitea.png

我不希望我的用户在看到 xml 时感到困惑,我更喜欢它进入空白页面或重定向到不同的 url...

如何重定向 url 以隐藏此 xml 报告 url?

马克,我试过你所说的,但它甚至在表单加载之前就重定向了。这是我为演示您的建议而制作的一个快速 jsfiddle:jsfiddle.net/ujsEG/12/

【问题讨论】:

  • 那个xml页面是你做的还是系统自动生成的?
  • 系统自动生成的
  • 你不能改变那个xml吗?如果您可以首先删除
  • 我希望可以,但我无权访问该 xml 文件或其组件。我希望有某种重定向之类的..
  • servlet 是否与站点不在同一个域中?我猜这就是为什么你不使用 AJAX 来处理客户端的响应?

标签: php javascript html xml forms


【解决方案1】:

您可以尝试使表单以隐藏 iframe 为目标,然后通过对 window.location.href 的 javascript 调用设置 iframe 的 onload 属性。

<script type="text/javascript">
var okToRedirect = false;
function redirect() {
    if (okToRedirect) {
        window.location.href = 'path/to/new/location';
    }
}
</script>

<form action="...some action..." target="MyIframe" onsubmit="okToRedirect = true;">
...
</form>

<iframe name="MyIframe" style="display: none;" onload="parent.redirect()"></iframe>

当表单发布时,结果将显示在隐藏的 iframe 中。一旦 iframe 完成加载,onload 属性将触发 javascript 以重定向用户。

更新

由于您的评论,我更新了我的答案。我添加了一个 iframe 可以调用的 javascript 方法。现在有一个全局变量,最初设置为 false。这将防止页面的首次加载重定向。当表单发布时,表单上的onsubmit 事件会将全局变量okToRedirect 设置为true,iframe 将重新加载并调用redirect() 方法。这一次,将发生重定向。

【讨论】:

  • 你说的我试过了,但是一旦表单加载它就会重定向......甚至不等待表单提交,所以我什至无法填写表单..
  • @Bool Tim:你是对的。看起来 onload 会在 iframe 首次设置时触发。我会在上面更新我的答案。基本上,您需要添加一些仅在提交表单时才进行重定向的 javascript。再回来看看......
  • @Bool Tim:我更新了答案。或者,您可以使用 AJAX。 JQuery 使这很容易。如果您需要示例,请告诉我。
  • 它有效!您的新解决方案有效:D 只是出于好奇,是否可以从重定向之前显示的 xml 中提取工作订单 ID?这将非常有用。
  • @Bool Tim:好问题,但不幸的是我不确定,因为我以前从未尝试过。您可以编写您的 javascript 函数以尝试通过标记名称获取元素并在执行重定向之前获取其值。但是,您可能会遇到安全问题。
猜你喜欢
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多