2015-06-09 104 views
0

我需要做的是,當用戶點擊某個div /圖像時,導航到不同的頁面。我在後端使用struts2。window.open vs form.submit

到目前爲止,我已經找到2項的方法,其中產生同樣的效果(導航到另一個頁面):

  1. 創建s:url標籤用我的行動。添加divonclick屬性,並將url作爲參數。在javascript函數中,請致電window.open(url)

  2. 用動作創建表單。使用jQuery,叫document.forms[].submit();

我想知道什麼是什麼是這兩種方法之間的差異。我主要感興趣的是struts內部或者瀏覽器和服務器之間的對話,或者會話會發生什麼的不同之處。有一點不同(我不感興趣)是window.open接受要在新窗口中打開的參數,並調整該窗口的大小。我想在同一個窗口中打開新的動作

第二個區別(確實更有趣)是表單允許使用POST或GET協議。作爲window.open,我不知道該協議用於

+0

您提出請求後,您可以得到這個信息。 –

回答

1

window.open打開一個新窗口
window.location改變當前頁面的位置
forms[n].submit()提交的第n個形式到服務器。

窗口函數發出GET請求,您可以在其中添加URL參數(如果需要將信息發送到服務器)。對於可以通過URL發送的字符數有限制,在GET請求中發送密碼通常不是個好主意。

當您發佈表單時,參數在消息中而不在URL中,因此它們不會顯示在瀏覽器歷史記錄中,也不受URL長度限制的影響。

如果您沒有將數據發送到服務器進行處理,你只是需要瀏覽的圖像上單擊,你應該把它包在一個錨定標記

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

好的,現在我發現window.open使用GET協議。否則,我知道GET和POST之間的區別。我仍然在尋找一個更強調struts2內部機制的答案。例如,就像在兩種情況下會話變量存在於下一頁一樣。然而,會話變量並不是我感興趣的唯一話題,所以我通常會問兩種方法之間的差異 –