Javascript Struts2 jsp页面在新窗口中打开,而不是在content div中打开
我有一个Struts2应用程序,其中主页水平分为页眉、菜单、内容和页脚。单击菜单,通过JQuery和Ajax调用“导航”操作。菜单名通过s:url标记作为参数传递给操作。根据菜单名,动态准备JSP页面名。但是,Ajax响应不会加载到页面的内容部分,而是重定向到新页面。我不知道为什么会这样。下面是代码片段 Menu.jspJavascript Struts2 jsp页面在新窗口中打开,而不是在content div中打开,javascript,jquery,html,ajax,struts2,Javascript,Jquery,Html,Ajax,Struts2,我有一个Struts2应用程序,其中主页水平分为页眉、菜单、内容和页脚。单击菜单,通过JQuery和Ajax调用“导航”操作。菜单名通过s:url标记作为参数传递给操作。根据菜单名,动态准备JSP页面名。但是,Ajax响应不会加载到页面的内容部分,而是重定向到新页面。我不知道为什么会这样。下面是代码片段 Menu.jsp <!-- Dynamic Menu Bar --> <div id="menu" class="divMenu"> <ul>
<!-- Dynamic Menu Bar -->
<div id="menu" class="divMenu">
<ul>
<s:iterator var="parent" value="menuList">
<li>
<s:a href="#">
<s:property value="#parent.menuDesc" />
</s:a>
<ul class="sub-menu">
<s:iterator var="child" value="#parent.childrenList">
<li>
<s:url var="urlValue" action="navigate">
<s:param name="pageName" value="#child.menuDesc" />
</s:url>
<s:a method="post" href="%{urlValue}" onclick="menuNavigate(this)">
<s:property value="#child.menuDesc" />
</s:a>
</li>
</s:iterator>
</ul>
</li>
</s:iterator>
</ul>
</div>
顺便说一句,我能够在Ajax调用的成功部分下使用警报看到响应。单击“确定”后,响应将显示在新窗口中
Struts2 XML
<action name="navigate" class="com.web.action.home.HomePageAction" method="navigate">
<result name="success">/WEB-INF/pages/${pageName}</result>
</action>
/WEB-INF/pages/${pageName}
添加一个事件。preventDefault()
对我很有效。感谢所有提供宝贵建议的人。添加一个事件。preventDefault()
对我很有效。感谢所有提供宝贵建议的人。您能否尝试从中删除method=“post”
,我之前在s:a中没有method=“post”,正在尝试,因为它不起作用。代码被粘贴在一起。我将尝试阻止默认值并让您知道。它是否与struts.xml中的名称空间有关。当前我的命名空间是/并且由于我正在传递带有URL的参数,浏览器URL在通过GET方法提交时会发生更改。命名空间与此无关。您正在单击一个链接,而浏览器正在执行您告诉它的操作--您需要防止默认值或返回false,否则该链接将像其他任何链接一样运行。preventDefault()对我有效。谢谢你的建议。如果有人能添加答案,我将投票并相应地打分。哦,我已经略过了href部分。然后preventDefault()
或使用javascript:void(0)代码>(,#
等…)如href@AleksandrM应该回答,但如果他不愿意,你自己回答,回答你自己的问题。附言:在你达到15%的声誉之前,你不能提高投票率,但你已经在考虑这样做了,这很好:)你能试着从中删除method=“post”
吗?我之前在S:a中没有method=“post”,因为它不起作用,所以正在尝试。代码被粘贴在一起。我将尝试阻止默认值并让您知道。它是否与struts.xml中的名称空间有关。当前我的命名空间是/并且由于我正在传递带有URL的参数,浏览器URL在通过GET方法提交时会发生更改。命名空间与此无关。您正在单击一个链接,而浏览器正在执行您告诉它的操作--您需要防止默认值或返回false,否则该链接将像其他任何链接一样运行。preventDefault()对我有效。谢谢你的建议。如果有人能添加答案,我将投票并相应地打分。哦,我已经略过了href部分。然后preventDefault()
或使用javascript:void(0)代码>(,#
等…)如href@AleksandrM应该回答,但如果他不愿意,你自己回答,回答你自己的问题。附言:在你达到15%的声誉之前,你不能提高投票率,但你已经在考虑这样做了,这很好:)
<action name="navigate" class="com.web.action.home.HomePageAction" method="navigate">
<result name="success">/WEB-INF/pages/${pageName}</result>
</action>