我有一个aspx网页(开启者),可以打开一个弹出窗口
在弹出窗口中,我需要检索开场页面中存在的隐藏字段的值。
所以这很简单,使用Javascript。
然而,这是问题,我需要在弹出页面加载之前处理SERVER端的隐藏字段的值
(基本上,隐藏字段包含需要反序列化服务器端的XML和用于构建弹出页面的DOM的数据)
那么如何在开启工具的隐藏字段中传递数据,以便在弹出窗口中获得已处理的服务器端?
数据太长,无法作为GET传递。即在弹出页面的查询字符串中
这里有哪些其他选择?
答案 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';
}
window.open()将打开一个弹出窗口,就像你想要的那样。
将表单的目标设置为打开的弹出窗口将确保表单将POST 发布到该弹出窗口。
由于 POST ,您可以发送比使用GET发送的数据更大的数据。
您可以在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;
获得该字段的值。