【问题标题】:Window.Open POSTWindow.Open POST
【发布时间】:2011-04-05 16:06:43
【问题描述】:

我有一个链接,点击后我会打开一个带有 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。

【问题讨论】:

标签: javascript jquery post popup window.open


【解决方案1】:

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

三个选项:

  1. 使用 javascript 触发带有 target="_blank" 的 POST 表单(但这不允许您禁用界面元素,例如菜单栏)。
  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)。此请求的结果可用于填充子窗口。

【讨论】:

    【解决方案2】:

    除了我自己会使用的 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 实际上会打开一个新窗口/选项卡,将在其中处理发布的数据。 不幸的是,您几乎无法控制新窗口的外观。

    【讨论】:

      【解决方案3】:

      如何使用 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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-06
        • 1970-01-01
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        • 2019-03-05
        • 1970-01-01
        相关资源
        最近更新 更多