none
关于js与asp.net的问题可以在这问吗?------session值为什么不变 RRS feed

  • 问题

  • 代码如下:
    客户端:
    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的值一直是不变的,就是初始值。
    请问上面的代码有什么错误,为什么会出现这种问题?
    谢谢!!

    2009年5月6日 14:45

答案

  • js文件被客户端浏览器缓存的问题吧?
    MSMVP VC++
    2009年5月6日 19:38
    版主
  • 楼主,你好

    按照你上面的这种写法,是无法影响到服务器端的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
    2009年5月7日 7:58

全部回复

  • js文件被客户端浏览器缓存的问题吧?
    MSMVP VC++
    2009年5月6日 19:38
    版主
  • 谢谢,一言惊醒梦中人。
    2009年5月6日 23:38
  • 楼主,你好

    按照你上面的这种写法,是无法影响到服务器端的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
    2009年5月7日 7:58