2013-04-23 260 views
5

我有一個按鈕註銷。一旦註銷被點擊,我需要顯示另一個頁面。我怎樣才能使用JavaScript做到這一點?誰能幫幫我嗎?如何使用javascript將jsp包含在另一個jsp中

我的代碼:

<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'); 
}); 
+0

那麼,你有沒有遇到任何錯誤? – 2013-04-23 07:18:50

+0

沒有。我沒有得到任何錯誤。頁面沒有得到加載 – mukund 2013-04-23 07:19:47

+0

嘗試檢查在JavaScript控制檯。 – 2013-04-23 07:20:15

回答

2

你不能include一個JSP輸入反應中對客戶端,因爲它是一個服務器端技術的點擊。您可以在發送之前在頁面中包含所需的HTML,使用CSS隱藏該區域,然後使用JavaScript將其顯示爲可見,以響應使用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> 
+0

我在這裏有一個問題...每當我加載包含註銷的頁面時,我都會收到confirmationpopup.jsp。單擊註銷時不會顯示它。 – mukund 2013-04-23 08:47:54

+0

你能幫我解決嗎? – mukund 2013-04-23 10:42:50

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 > 

樣品頁面 - >爲DIV任何有效的HTML可能是 confirm.jsp 做動作......你確定嗎?跨度

// TODO形式在這裏 HTML /彈出/腳本/ CSS - >就像一個iframe

看起來要顯示一個確認 - 一些用戶界面問你是否真的要退出?最好的方法是創建一個id爲「logoutConfirmSpan」的空跨度,然後點擊註銷,做ajax(異步模式 - > false,所以它發生內聯)獲取html標記並將其設置爲innerHTML的跨度

該html應該是有效的,這樣它會使用戶界面顯示並且形式才能真正註銷。

Replace inner HTML of a div with Ajax response告訴你如何使用Ajax與jQuery

簡單的例子:

HTML snippets

<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> 
+0

你可以更清楚一點,或者你可以請我給我舉一些例子,因爲我沒有任何使用ajax的經驗 – mukund 2013-04-23 08:26:49

+0

對不起,我沒有得到你 – mukund 2013-04-23 08:59:20

+0

建議你去通過stacktrace http://stackoverflow.com/a/14851734/1643558你在問同樣的事情 - 看到那裏的答案。如果你想在AJAX上找到一些背景,請參閱http://www.quirksmode.org/blog/archives/2005/12/the_ajax_respon.html搜索「HTML片段」 – tgkprog 2013-04-23 09:07:43

2

您可以使用一個簡單的GET請求獲取由次級.jsp頁面呈現的HTML 。 基本上,從內阿賈克斯,使用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); 
    } 
}); 
1

1)創建<div id='someID'></div>同時按一下按鈕初始頁面加載

2),直通JavaScript和你的新的JSP創建一個iframe 網址

3)一旦iframe內容的對話框 窗口中加載顯示它作爲一個彈出或許

+0

我從來沒有使用iframes和所有。你可以多解釋一下還是給我舉個例子? – mukund 2013-04-23 10:44:07

+0

從這裏開始http://www.w3schools.com/tags/tag_iframe.asp – Madhu 2013-04-23 10:50:24

+0

我不需要iframe ...我已經有一個頁面了...我需要使用javascript顯示該頁面...我該怎麼做那是因爲我們在任何地方都使用相同格式的確認信息,我不需要更改它 – mukund 2013-04-23 10:53:51

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 > 
+0

但是ajax對於工作流等來說更強大,但這可能是如果只有1個動作就夠了 – tgkprog 2013-04-23 11:13:26

0

AJAX是你在找什麼。

我強烈建議你用jQueryshowcase -> div)執行AJAX電話,但在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必須返回成功的JSP代碼段要包括的。