将值从开启器传递到弹出窗口并处理它的服务器端,而不是客户端。不能使用GET

时间:2009-12-01 14:31:23

标签: c# .net javascript html

我有一个aspx网页(开启者),可以打开一个弹出窗口

在弹出窗口中,我需要检索开场页面中存在的隐藏字段的值。

所以这很简单,使用Javascript。

然而,这是问题,我需要在弹出页面加载之前处理SERVER端的隐藏字段的值

(基本上,隐藏字段包含需要反序列化服务器端的XML和用于构建弹出页面的DOM的数据)

那么如何在开启工具的隐藏字段中传递数据,以便在弹出窗口中获得已处理的服务器端?

数据太长,无法作为GET传递。即在弹出页面的查询字符串中

这里有哪些其他选择?

  1. 在弹出窗口中使用Javascript检索它,然后进行回发以重新加载页面(非常难看)
  2. 打开弹出窗口时以某种方式发布数据?这是可能的,我可以通过查询字符串
  3. 传递其他信息
  4. 还有其他想法吗?

3 个答案:

答案 0 :(得分:2)

有这样的表格

<form method="POST" action="action.php" onsubmit="open_popup(this);">
    <input name="really-big-field" type="hidden">
</form>

另外,像这样的javascript

function open_popup(form)
{
    window.open('action.php', 'actionpopup','width=400,height=300');
    form.target = 'actionpopup';
}
  1. window.open()将打开一个弹出窗口,就像你想要的那样。

  2. 将表单的目标设置为打开的弹出窗口将确保表单将POST 发布到该弹出窗口

  3. 由于 POST ,您可以发送比使用GET发送的数据更大的数据。

  4. 您可以在action.php(或ASP.Net/VB文件)中处理数据服务器端

答案 1 :(得分:0)

我对这类问题的通常解决方案是使用XmlHTTPRequest将XML发布到服务器,服务器只是根据GUID等一些唯一ID存储XML,并从服务器返回ID。

您为弹出窗口提供的URL只需要携带此ID而不是整个XML。现在,当该URL另一端的服务器代码需要XML时,它可以使用该ID来查找XML(可能同时将其从临时存储中删除),并且可以处理XML,就好像已经在请求。

答案 2 :(得分:0)

编辑:抱歉,我发现这不能解答你的问题。我没有清楚地阅读它,并没有意识到你需要做服务器端。我想如果您想采用这条路径,那么您可以通过AJAX向上构建它。

父页面:

 foo = 'bar'; 
 child = open ("popup.html");
 // you can now access the new windows functions with child.varname and child.function()

子页面:

 alert(window.opener.foo);

应警告Foo。因此,您可以:

 somevar = window.opener.document.getElementById('id').value;

获得该字段的值。