5

我有一个按钮注销。单击注销后,我需要显示另一个页面。如何使用 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;" /> &nbsp;Log out</s:a></span>
    </s:form> 

我试过这个:

$('#logoutId').click(function(event) {

    $('#logoutdiv').load('ConfirmationPopup.jsp');
});
4

6 回答 6

3

您不能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>
于 2013-04-23T07:26:38.190 回答
3

您可以使用 ajax 从第二个 jsp 获取 html,然后附加到 DOM 或元素的 innerHTML。

主页.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 >

带有确认代码的示例页面 -> 可以为 div 的任何有效 html 确认.jsp 执行操作...您确定吗?

//todo 在这里形成 span/popup/script/css 的 html -> 就像 iframe

看起来您想显示确认信息 - 一些 UI 询问您是否真的要注销?

最好的方法是创建一个 ID 为“logoutConfirmSpan”的空跨度,然后单击注销,执行 ajax(异步模式-> false,因此它内联发生)获取 html 标记并将其设置为跨度的 innerHTML

html 应该是有效的,这样它才能使 UI 出现并且表单真正注销。

请参阅Replace inner HTML of a div with Ajax 响应告诉您如何将 ajax 与 jQuery 一起使用

简单示例:

HTML 片段

<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>
于 2013-04-23T08:02:33.193 回答
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);
    }
});
于 2013-04-23T08:57:46.363 回答
1

1)创建一个<div id='someID'></div>while初始页面加载

2) 在按钮单击时,通过 javascript 使用您的新 jsp url 创建一个 iframe

3)一旦加载了 iframe 内容,可能会在对话框窗口中将其显示为弹出窗口

于 2013-04-23T10:06:02.647 回答
0

AJAX 是您正在寻找的。

我强烈建议您使用( showcase -> div )执行AJAX调用,但您可以立即尝试使用已弃用的插件,而无需下载任何库,只是为了让您有所了解。jQueryStruts2 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必须成功返回您想要包含的 JSP 片段。

于 2013-04-24T09:14:24.077 回答
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 >
于 2013-04-23T11:12:52.573 回答