需要在页面加载时将javascript结果传递到服务器端
本文关键字:结果 javascript 服务器端 加载 | 更新日期: 2023-09-27 18:02:23
我有一个主页,它加载了我的Default.aspx
我需要使用
获取浏览器版本function loadHiddenField()
{
document.getElementById("HiddenField1").value = document.documentMode;
}
这个结果需要传递给我的默认值。aspx页面,以便我可以在用于填充页面的Linq查询中使用它。这一切都发生在我的网站第一次加载。
:
1)输入我的网站网址
2)页面加载,默认显示正确的信息。
我最初试图使用客户端body onload调用该方法,但我意识到这不起作用。所以我需要知道什么是有效的…
请不要告诉我使用HttpBrowserCapabilities,因为这是行不通的。上面的JavaScript就是我需要的。
我被困住了,真的需要帮助。我以前问过这个问题,但是唯一一个试图帮忙的人删除了他的帖子。<script>
bDocumentNeedsReload = <%= Session('documentmode') >= 0 : 'TRUE','FALSE' %>
if( document.documentMode ) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "setsessiondocumentmode.aspx?mode=" + document.documentMode);
xhr.send();
if( bDocumentNeedsReload == TRUE ){
window.location.reload();
}
}
</script>
对此持保留态度:我还没有测试过,但你可能知道我要做什么。而且,比我聪明的人可能会给你一个合适的解决方案。而且,我的c#有点过时了。
您可以使用两个不同的页面来解决这个问题。第一个页面加载,它加载的那一刻,它重定向到默认。Aspx传递文档。查询字符串中的documentMode。这样你的浏览器版本就在代码后面了。
function redirect()
{
document.location = 'default.aspx?mode=' + document.documentMode;
}
在页眉中调用redirect()。
在默认的page_load中。你只需要使用Request.QueryString["mode"];
你可以通过Javascript在请求头中设置一个变量(参见这个问题)。下面是一个例子:
<script type="text/javascript">
function onLoad() {
var request = new XMLHttpRequest();
request.open("POST", "/Home/About", true);
request.setRequestHeader("documentMode", document.documentMode);
alert(document.documentMode);
request.send();
}
</script>
注意,您需要首先调用Open()。也不是所有的浏览器dom都有文档。documentMode设置!这个例子返回到/Home/About,但是你可以在你的服务器上找到你想要的任何端点,甚至可以将这些信息保存到一个cookie中,这样以后的请求就会包含这些信息。
然后,服务器代码可以检查请求头(下面的示例是针对ASP的)。NET MVC):string documentMode = Request.Headers["documentModel"];
使用基本的ASP。. NET MVC 3网站,在我的About()控制器函数中将documentMode变量设置为'7'。