6

我有一个链接,单击该链接时,我会打开一个带有 window.open 的窗口,如下所示。

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

我不希望参数在这里传递,而是我想要像 post 这样人们不能复制 url 的东西。

4

3 回答 3

16

您不能触发 javascript 弹出窗口然后强制发布请求。

三个选项:

  1. 使用 javascript触发 POST 表单target="_blank"(但这不允许您禁用界面元素,例如菜单栏)。
  2. 在本地打开一个弹出窗口,但不要指定 url。使用 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. 你真的不应该这样做。如果用户复制 url 对用户不利,则说明您的应用程序设计存在缺陷。

  4. 编辑后添加:使用“空窗口”方法,但不是编写表单并触发它,而是XMLHTTPRequest在父级中执行(使用 POST)。此请求的结果可用于填充子窗口。

于 2011-04-05T16:16:49.797 回答
7

除了我自己会使用的 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>

target = _blank 实际上会打开一个新窗口/选项卡,将在其中处理发布的数据。不幸的是,您几乎无法控制新窗口的外观。

于 2011-04-05T16:18:50.310 回答
0

使用 div 实现模型弹出窗口怎么样?您可以进行 http post 调用以加载该 div/model 弹出窗口的内容。您也可以使用 jQuery load() 方法来加载 div 的内容。

http://api.jquery.com/load/

其他一些模型弹出插件在这里

http://jquery.com/demo/thickbox/

http://colorpowered.com/colorbox/

http://fancybox.net/

于 2011-04-05T16:14:27.950 回答