在下面的代码中,该值不会从一个页面传递到另一个页面。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<script type="text/javascript">
function generateRow() {
var myvar = "testuser";
'<%Session["temp"] = "' + myvar +'"; %>';
window.location = "WebForm2.aspx";
}
</script>
<head>
<title></title>
</head>
<body>
<div runat="server">
<input id="Button1" type="button" onclick="generateRow()" value="button" />
</div>
</body>
</html>
上面的代码有什么问题?
答案 0 :(得分:8)
您无法使用Javascript设置会话。你的输出JS文件正是你写下来的。
你可以这样做:
window.location = "WebForm2.aspx?temp=" + myvar;
在Webform2中你可以这样做:
Request.querystring["temp"];
答案 1 :(得分:4)
下一页不会保留一页中的全局变量。
如果你想要这个客户端,你有三个选择(至少):
将变量传递给查询字符串的下一页,例如:
window.location = "WebForm2.aspx?myvar=" + encodeURIComponent(myvar);
使用cookie(数百万个在线示例,我不会重复它们,阅读cookie会有点痛苦)。
使用客户端会话存储或本地存储,这两者都包含here。这是客户端会话存储示例:
// Setting
sessionStorage.myvar = myvar;
// Getting (on the next page)
var myvar = sessionStorage.myvar;
(sessionStorage
是浏览器提供的全局变量。)
这适用于just about any browser you need to care about(IE8 +,以及基本上所有其他内容的现代版本)。
服务器端,选项1和2都可以工作,但1会最有意义。