我有一个按钮注销。点击退出后,我需要显示另一个页面。我怎么能用JavaScript做到这一点?有人可以帮帮我吗?
我的代码:
<s:form name="LogoutAction"
id="LogoutAction" action="logout">
<span class="inlayField2">
<s:a href="logout" cssClass="planTabHeader" id="logoutId"> <img src="../../KY/images/common/header/lock.png" alt="logout" style="border: none;background-color: transparent;" /> Log out</s:a></span>
</s:form>
我试过了:
$('#logoutId').click(function(event) {
$('#logoutdiv').load('ConfirmationPopup.jsp');
});
答案 0 :(得分:3)
您可以使用ajax从第二个jsp获取html,然后附加到DOM或元素的innerHTML。
主要Page.jsp
<span id=confirmSpan></span>
<script language="Javascript">
function xmlhttpPost(strURL, queryStr) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari, opera etc
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert("no ajax")
return
}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) {
updatepageConfirm(self.xmlHttpReq.responseText);
}
}
self.xmlHttpReq.send(queryStr);
}
function updatepageConfirm(str){
document.getElementById("confirmSpan").innerHTML = str;
}
function logout1(){
xmlhttpPost("confirm.html");//http://sel2in.com/pages/prog/html/ajax/confirm.html", "")
}
</script>
</head>
<body>
<form id="search" action="/search" method="get">
<input type=button onclick=logout1() value=logout>
</form >
带确认代码的示例页面 - &gt; div的任何有效html都可以 的 confirm.jsp 强> 做行动......你确定吗?
// todo在这里形成 span / pop up / script / css的html - &gt;就像一个iframe看起来你想要显示一个确认 - 有些用户界面询问你真的想退出吗?
最好的方法是使用id“logoutConfirmSpan”创建一个空的span,然后单击logout,执行ajax(异步模式 - &gt; false,使其发生内联)获取html标记并将其设置为innerHTML跨度
html应该有效,这样才能显示用户界面,并且表单才能真正注销。
请参阅Replace inner HTML of a div with Ajax response告诉您如何在jQuery中使用ajax
简单样本:
<span id = 'logoutConfirmSpan'> </span>
<script>
// call ajax, with the response call setHtmlForConfirm
function setHtmlForConfirm(req)
{
document.getElementById('logoutConfirmSpan').innerHTML = req.responseText;
}
//req.responseText should have the html to show the confirm UI and form to submit yes/ no
</script>
答案 1 :(得分:2)
你不能include
一个JSP响应客户端点击,因为它是服务器端技术。您可以在发送之前在页面中包含所需的HTML,使用CSS隐藏该区域,然后使用JavaScript单击鼠标使其可见。在页面显示之前,服务器上已经发生了include
发送给客户。你可以这样:
<div id="confirmPopup" style="display:hidden;">
<%@ include file="ConfirmationPopup.jsp" %>
</div>
<script>
$('#logoutId').click(function(event) {
document.getElementById("confirmPopup").style.display="block";
});
</script>
答案 2 :(得分:2)
您可以使用简单的GET
请求来获取辅助.jsp
页面呈现的HTML。
基本上,从Ajax中,使用jQuery可以做到:
$.get({
url: "mysite.com/otherpage.jsp",
data: "some data you want to send, optional",
success: function(data, textStatus, jqXhr)//the response data, the ajax request status and the ajax request object itself {
$('#someDiv').html(data);
}
});
答案 3 :(得分:1)
1)在初始页面加载时创建
<div id='someID'></div>
2)点击按钮,通过javascript用你的新jsp创建一个iframe URL
3)加载iframe内容后,可能会在对话框中将其显示为弹出窗口 窗口
答案 4 :(得分:0)
另一种方法可以保持跨度和点击次数: http://sel2in.com/pages/prog/html/ajax/aPage2.html1
<span id=confirmSpan></span>
<script language="Javascript">
function logout1(){
iconfirmSpan = document.getElementById("confirmSpan")
if (!confirmSpan){
alert("Error no confirmSpan contact support!");
}
confirmSpan.innerHTML = "<iframe src=\"http://sel2in.com/pages/prog/html/ajax/confirm.html\" height=400 width=700></iframe>"
//in real can keep height 1 width 1 and location off page if you want it just to load elements, scripts etc
}
</script>
</head>
<body>
<form id="search" action="/search" method="get">
<input type=button onclick=logout1() value="Do Action">
</form >
答案 5 :(得分:0)
AJAX正是您所寻找的。
我强烈建议您使用 AJAX
(showcase -> div)执行jQuery
来电,但在Struts2
中,您可以尝试使用弃用 Dojo
插件,无需下载任何库,只是为了让您明白。
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<head>
<sx:head/>
<script>
function loadAjax(){
var div = dojo.widget.byId("myDiv");
div.href = "yourAjaxAction.action";
div.refresh();
}
</script>
</head>
<body>
<input type="button"
value="Include a JSP fragment dynamically"
onclick="loadAjax();"/>
<sx:div id="myDiv"> </sx:div>
</body>
然后,您的yourAjaxAction.action
必须在SUCCESS上返回您要包含的JSP代码段。