【问题标题】:Pass data to server side from Javascript code从 Javascript 代码将数据传递到服务器端
【发布时间】:2012-03-28 05:03:58
【问题描述】:

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

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

我的其他想法是添加自定义 HTTP 标头 windowId 或在 OnSubmit 事件上添加一个将参数附加到 document.location.href 的 JS。

我设法用 XMLHttpRequest setRequestHeader 从 JS 写入标头,但是,也许我在实现中做错了,这会生成 2 个请求,第一个是正常的,预期一个(单击按钮/链接...),第二个来自XMLHttpRequest。我觉得这种行为非常不自然。 您有什么建议吗?请参阅下面的代码 sn-p)。 我不使用 AJAX。

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

对于OnSubmit 钩子的想法,我没有花太多时间在上面,但我认为我必须先附加# 字符,然后再将windowId 参数附加到它的值,这样页面就不会' t 重新加载。这一点我可能是错的。无论如何,我必须在获取值后从 URL 中删除它,这样用户就不会看到讨厌的 URL。 您有什么建议吗?

好的,你有什么想法?

感谢您阅读我所有的喋喋不休,并提前感谢您的回答。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我忘记了 Request.Form。
    • 这对我不起作用。在 Oninit 中,我们无权访问控制值。它每次都给我NULL..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多