积极答复者
关于js与asp.net的问题可以在这问吗?------session值为什么不变

问题
-
代码如下:
客户端:
function btnSure_onclick()
{
var obj=document.getElementById("<%=txtSltOrder.ClientID%>").value;
if (obj!="" && obj!=null)
{
var str=obj.split("\n");
for(var i=0;i<str.length;i++)
{
var bb=document.getElementById("hdTime").Value;
alert(bb);------调用时显示的结果是正常的,第一次是0,第二次显示的是上一次的结果
document.getElementById("hdTime").Value=i;
var cc=document.getElementById("hdTime").Value;
alert(cc);------显示的是赋值后的结果
var aa="<% =writeSession()%>";
window.showModalDialog('prjList.aspx',str[i],'dialogWidth:488px;dialogHeight:295px;help:no;scroll:no;status:no')
}
window.close();
}
else
{
window.alert("请输入项目首字!");
}
}
服务端:
public string writeSession()
{
Session["inputWord"] = hdTime.Value;
return "OK";
}
OK这个结果也能返回,但session的值一直是不变的,就是初始值。
请问上面的代码有什么错误,为什么会出现这种问题?
谢谢!!
答案
-
楼主,你好
按照你上面的这种写法,是无法影响到服务器端的session的,代码执行顺序是先服务器端,再客户端。
你可以尝试debug下。当debug开始时, 由于这句代码 var aa="<% =writeSession()%>"的原因,系统会首先直接return “OK”.
此后,你可以查看页面的source code可以发现这一段js脚本语句。
var aa="OK"
所以aa的被直接赋值为OK了。
所以即便每次你调用脚本更改了hdTime的value,但是因为没有postback,所以不会去调用writeSession这个函数。session的值不会发生改变。
Microsoft Online Community Support- 已编辑 KeFang Chen 2009年5月7日 8:01
- 已标记为答案 KeFang Chen 2009年5月12日 8:41
全部回复
-
楼主,你好
按照你上面的这种写法,是无法影响到服务器端的session的,代码执行顺序是先服务器端,再客户端。
你可以尝试debug下。当debug开始时, 由于这句代码 var aa="<% =writeSession()%>"的原因,系统会首先直接return “OK”.
此后,你可以查看页面的source code可以发现这一段js脚本语句。
var aa="OK"
所以aa的被直接赋值为OK了。
所以即便每次你调用脚本更改了hdTime的value,但是因为没有postback,所以不会去调用writeSession这个函数。session的值不会发生改变。
Microsoft Online Community Support- 已编辑 KeFang Chen 2009年5月7日 8:01
- 已标记为答案 KeFang Chen 2009年5月12日 8:41