有二个页面
每一个页面:Img.aspx
       专门用来输出验证码的,并且我将验证码的字符存入Session中,在前台调用,并进行判断
         string code = dp.recheckCode();   ---取随机码的方法        this.Session["CheckCode"] = code;   --将随机码赋给Session,以便在前台,进行判断        dp.getJpg(code,this.Context);    --输出验证图片第二个页面:
        function aa()
       {
        
        var u   = '<%=Session[ "CheckCode"]%> '; 
        alert(u);
        
       }
      第一次调用函数,取得值为null,第二次才会是正确的
       ???????

解决方案 »

  1.   

    你的aa() 在哪里调用的?  如果一开始就执行  可能session就是null  因为脚本先执行  然后才会加载页面上剩下的东西  包括session和HTML代码
      

  2.   

    很有可能是执行顺序的问题,看看下面的文章
    http://www.chxwei.com/article.asp?id=580
      

  3.   

    在application里先配置.Session["CheckCode"] =""再看看执行顺序
      

  4.   

    感觉有点奇怪,验证码的session一般是在后台判断的。前台如下面:
    <asp:Image ID="Image1" runat="server" ImageUrl="ValidateImage.aspx" />
    (ValidateImage.aspx生成验证码图片)然后在后台判断:
      if (tbVCode.Text.Trim() != Session["ValidateCodeValue"].ToString())
            {
                lblMsg.Text = "验证码错误!";
    ....
      

  5.   

    在后台调用js,就可以取到session了
      

  6.   

    我曾遇到相同的问题,每次取的session值都是上一次session的值,且第一次为null,我也怀疑是执行顺序问题,但无果。
      

  7.   

    问题在于 function aa() 
          { 
            
            var u  = ' <%=Session[ "CheckCode"]%> '; 
            alert(u); 
            
          } 
    和img.aspx的执行顺序上吧
    img.aspx被访问才能生成一个Session[ "CheckCode"],这个时候再取值alert(u)才是想要的。但页面解析时
    img.aspx还没有被这次加载访问,所以<%=Session[ "CheckCode"]%>还是上一次的值,第一次的话那就是null了,用这个方法给js变量赋值我觉得是肯定不能成功的,除非能把img.aspx的加载确定一定以及肯定的放在<%=Session[ "CheckCode"]%> 的解析前面运行
      

  8.   

    每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
    我也遇到了类似的问题,哎,连自己都不说清楚,我经过了一下webseal就不行了,不经过他可以