2011-04-05 41 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实际上会打开一个新窗口/选项卡中的数据发布将被处理。 不幸的是,你很难控制新窗口的外观。