从Javascript代码将数据传递到服务器端

时间:2012-03-11 15:21:50

标签: c# javascript asp.net http-headers

我正在尝试将数据从客户端发送到服务器端(asp.net c#),如果你真的想知道,我想发送window.name属性

首先我想到有一个asp:HiddenField并且在OnSubmit事件上有一些JS在隐藏字段中写入值。唯一的问题是我只能从PreLoad事件到PreRenderComplete事件访问隐藏字段值(根据this)。我正在处理的项目在OnInit事件中有很多代码,不幸的是我无法移动它,我需要在这里使用window.name值。

我拥有的其他想法是添加自定义HTTP标头windowIdOnSubmit事件有一个JS,它将参数附加到document.location.href

我设法用XMLHttpRequest setRequestHeader写了JS的标题,但是,我的实现可能做错了,这会产生2个请求,第一个一个是正​​常的,预期的一个(单击按钮/链接...),第二个来自XMLHttpRequest。我发现这种行为非常不自然。 您是否有任何吸烟? 请参阅下面的代码段)。 我不知道如何使用AJAX。

    var oReq = new window.XMLHttpRequest;
    oReq.open('POST', document.location, false);
    oReq.setRequestHeader("windowId", window.name);
    oReq.send(null);

对于OnSubmit钩子的想法,我没有花太多时间在它上面,但我想我必须在我的windowId参数附加它的值之前附加#字符,以便页面不会重新加载。我可能错了。无论如何,我必须在获取值后从URL中删除它,以便用户看不到令人讨厌的URL。 你有任何吸烟吗?

好的,你有什么想法?

感谢您阅读我的所有诽谤,并提前感谢您的答案。

1 个答案:

答案 0 :(得分:1)

我会推荐<asp:HiddenField />(例如,<asp:HiddenField ID="hfWindowName" runat="server" />。在OnInit中,您仍然可以使用Request.Form访问其值:

string windowName = Request.Form(hfWindowName.UniqueID);