javascript - window.open 与 form.submit

标签 javascript struts2

我需要做的是,当用户单击某个 div/图像时,导航到不同的页面。我在后端使用struts2。

到目前为止,我发现了两种方法,它们产生相同的效果(导航到另一个页面):

  1. 使用我的操作创建一个 s:url 标记。添加 div 一个 onclick 属性,并以 url 作为参数。在 javascript 函数中,调用 window.open(url)

  2. 使用该操作创建一个表单。使用 jquery,调用 document.forms[].submit();

我想知道这两种方法有什么区别。我最感兴趣的是 struts 内部发生的情况、浏览器和服务器之间的对话、或者 session 发生的情况方面的差异

一个区别(我对此不感兴趣)是 window.open 还接受在新窗口中打开的参数,并调整该窗口的大小。我想在同一窗口中打开新操作

第二个区别(确实更有趣)是表单允许使用 POST 或 GET 协议(protocol)。至于window.open,我不确定使用的是哪种协议(protocol)

最佳答案

window.open 打开一个新窗口
window.location 更改当前页面的位置
forms[n].submit() 将第 n 个表单提交到服务器。

窗口函数发出 GET 请求,如果您需要向服务器发送信息,您可以在其中添加 URL 参数。您可以在 URL 中发送的字符数有限制,并且在 GET 请求中发送密码通常不是一个好主意。

当您发布表单时,参数位于消息中而不是 URL 中,因此它们不会显示在浏览器历史记录中,也不受 URL 长度限制的影响。

如果您不将数据发送到服务器进行处理,而您只需在图像上导航,则应单击鼠标将其包装在 anchor 标记中

<a href="desired location"><img src=""/></a>

关于javascript - window.open 与 form.submit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30736653/

相关文章:

java - 在 Struts 2 中的 request.getAttribute(..) 中获取 Null

java - 如何在 select Struts2 中选择一个 HashMap 的值?

java - 我应该如何通过 Struts 操作连接和使用我的核心类?

javascript - 为事件 session 保留新的 JavaScript 值/在事件 session 期间将 JavaScript 样式应用于所有页面

javascript - 使用 webSocket 向特定连接的用户发送消息?

javascript - Angular - 绑定(bind)到返回 promise 的函数

java - Hibernate 与 struts2 集成 - session 为空

java - Struts 2 请求参数验证(Int 和字符串)

javascript - 如何从数据表中深层嵌套的对象中读取信息?

javascript - 在drupal节点中实现javascript