2011-04-05 38 views
6

我有一個鏈接,當點擊時,我打開一個窗口,如下所示的window.open。Window.Open POST

window.open("edit.jsp?clientId=" + clientId + "&eventId=" + eventId , 'height=600,width=800,scrollbars=1,location:no,menubar:no,resizable=1,status:no,toolbar:no'); 

我不希望參數通過這裏,而不是我想發佈的東西,所以人們不能複製網址。

+5

這個問題看起來類似於:[window.open post](http://stackoverflow.com/questions/3951768/window-open-and-pass-parameters-by-post-method-problem) – richaux 2011-04-05 16:14:20

回答

15

不能觸發JavaScript彈出,然後強制POST請求。

三個選項:

  1. 觸發一個POST形式target="_blank"使用JavaScript(但不允許你禁用界面元素,如菜單欄)。
  2. 在本地打開一個彈出窗口,但不指定網址。使用window.open的結果來更改文檔以生成一個表單,然後發佈。

    var myWindow = window.open("", "", "height=600,width=800,scrollbars=1,location=no,menubar=no,resizable=1,status=no,toolbar=no"); 
    myWindow.document.write("Write a form here and then later on trigger it"); 
    
  3. 你真的不應該這樣做。如果用戶複製網址對用戶不利,則應用程序設計中存在缺陷。

  4. 添加編輯後:使用「空窗」的做法,但不是寫一個形式和觸發它,做一個XMLHTTPRequest(帶POST)在父。此請求的結果可用於填充子窗口。

6

除了AJAX(jquery.load()),我會用我自己 - 如何對以下方法:

<form method="post" action="edit.jsp" target="_blank"> 
     <input type="hidden" name="clientId" value="88"/> 
     <input type="hidden" name="eventId" value="2"/> 
</form> 

目標= _blank實際上會打開一個新窗口/選項卡中的數據發佈將被處理。 不幸的是,你很難控制新窗口的外觀。