asp.net无法第一时间获取到session值!

90_後 2014-10-20 05:42:18
code.aspx
有一个页面code.aspx是绘制验证码的就是把 几个字符画在了图片上,
并且在load事件中把字符赋值给了session

index.aspx
然后另一个页面index.aspx上的图片路径直接引用了code.aspx
浏览时页面上的验证码显示正常。

但是在index.aspx的load事件中第一次是获取不到session值,重新访问(刷新)就能获取 并且是第一的验证码字符。
我觉的原因应该是和页面的执行顺序有关。

谁能解释下?并且给出解决方案!!!
...全文
192 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qzyf1992 2014-10-21
  • 打赏
  • 举报
回复
引用 4 楼 liu281 的回复:
[quote=引用 2 楼 qzyf1992 的回复:] 在走index page_load的时候code根本没有被访问,之后当render走完返回客户端浏览器解析html的时候才会向code.aspx发送请求。
如果我在index.aspx上用js获取
function testVCode(obj) {
            var sessionVCode = '<%=Session["CheckCode"]%>';
            alert(sessionVCode);
        }
假如我在鼠标离开验证码输入框的时候调用这个 testVCode(obj) js方法。 弹出的空。按照页面的加载顺序 调用 testVCode(obj)的 时候页面已经加载完毕。 这个怎么解释?[/quote] 当然是弹出空了啊。 这句话尖括号里的代码是在服务器运行的也就是在index的render事件里运行的。而此时并没有向code发送请求。session当然是空了。 你可以看看浏览器的html代码这句js已经变成

     function testVCode(obj) {
            var sessionVCode = '';
            alert(sessionVCode);
        }
了因为在index.aspx服务器就已经把尖括号的东西解析成空了
90_後 2014-10-21
  • 打赏
  • 举报
回复
引用 2 楼 qzyf1992 的回复:
在走index page_load的时候code根本没有被访问,之后当render走完返回客户端浏览器解析html的时候才会向code.aspx发送请求。
如果我在index.aspx上用js获取
function testVCode(obj) {
            var sessionVCode = '<%=Session["CheckCode"]%>';
            alert(sessionVCode);
        }
假如我在鼠标离开验证码输入框的时候调用这个 testVCode(obj) js方法。 弹出的空。按照页面的加载顺序 调用 testVCode(obj)的 时候页面已经加载完毕。 这个怎么解释?
90_後 2014-10-21
  • 打赏
  • 举报
回复
引用 1 楼 github_22161131 的回复:
用户访问的是index.aspx,load触发时code.aspx还没有被访问。index的响应返回浏览器,然后浏览器再请求的code.aspx,生成图片并把验证码保存到session,code请求的响应返回浏览器,用户看到验证码图片。 所以再刷新的时候在index.aspx的load里看到了上一次记录在session里的值。 用户在填好验证码post到index.aspx的时候要验证是不是和session里面的值一致,这个时候session里面就是用户看到的那个,貌似没问题。
在load以外事件获取 没有问题。 如果我在index.aspx上用js获取
function testVCode(obj) {
            var sessionVCode = '<%=Session["CheckCode"]%>';
            alert(sessionVCode);
        }
假如我在鼠标离开验证码输入框的时候调用这个 testVCode(obj) js方法。 弹出的空。按照页面的加载顺序 调用 testVCode(obj)的 时候页面已经加载完毕。 不理解..........
qzyf1992 2014-10-21
  • 打赏
  • 举报
回复
在走index page_load的时候code根本没有被访问,之后当render走完返回客户端浏览器解析html的时候才会向code.aspx发送请求。
winnowc 2014-10-21
  • 打赏
  • 举报
回复
用户访问的是index.aspx,load触发时code.aspx还没有被访问。index的响应返回浏览器,然后浏览器再请求的code.aspx,生成图片并把验证码保存到session,code请求的响应返回浏览器,用户看到验证码图片。 所以再刷新的时候在index.aspx的load里看到了上一次记录在session里的值。 用户在填好验证码post到index.aspx的时候要验证是不是和session里面的值一致,这个时候session里面就是用户看到的那个,貌似没问题。
qzyf1992 2014-10-21
  • 打赏
  • 举报
回复
引用 6 楼 liu281 的回复:
[quote=引用 5 楼 qzyf1992 的回复:] [quote=引用 4 楼 liu281 的回复:] [quote=引用 2 楼 qzyf1992 的回复:] 在走index page_load的时候code根本没有被访问,之后当render走完返回客户端浏览器解析html的时候才会向code.aspx发送请求。
如果我在index.aspx上用js获取
function testVCode(obj) {
            var sessionVCode = '<%=Session["CheckCode"]%>';
            alert(sessionVCode);
        }
假如我在鼠标离开验证码输入框的时候调用这个 testVCode(obj) js方法。 弹出的空。按照页面的加载顺序 调用 testVCode(obj)的 时候页面已经加载完毕。 这个怎么解释?[/quote] 当然是弹出空了啊。 这句话尖括号里的代码是在服务器运行的也就是在index的render事件里运行的。而此时并没有向code发送请求。session当然是空了。 你可以看看浏览器的html代码这句js已经变成

     function testVCode(obj) {
            var sessionVCode = '';
            alert(sessionVCode);
        }
了因为在index.aspx服务器就已经把尖括号的东西解析成空了[/quote] 那我在输入框的鼠标离开事件中调这个方法,不是鼠标离开时又访问了这个方法(这个时候session已经有值了,可为什么还是空)[/quote] 你在客户端js如何调用session你真要session得发个ajax请求道服务器上去拿。。这里的js语句sessionVCode 已经为空了
90_後 2014-10-21
  • 打赏
  • 举报
回复
引用 5 楼 qzyf1992 的回复:
[quote=引用 4 楼 liu281 的回复:] [quote=引用 2 楼 qzyf1992 的回复:] 在走index page_load的时候code根本没有被访问,之后当render走完返回客户端浏览器解析html的时候才会向code.aspx发送请求。
如果我在index.aspx上用js获取
function testVCode(obj) {
            var sessionVCode = '<%=Session["CheckCode"]%>';
            alert(sessionVCode);
        }
假如我在鼠标离开验证码输入框的时候调用这个 testVCode(obj) js方法。 弹出的空。按照页面的加载顺序 调用 testVCode(obj)的 时候页面已经加载完毕。 这个怎么解释?[/quote] 当然是弹出空了啊。 这句话尖括号里的代码是在服务器运行的也就是在index的render事件里运行的。而此时并没有向code发送请求。session当然是空了。 你可以看看浏览器的html代码这句js已经变成

     function testVCode(obj) {
            var sessionVCode = '';
            alert(sessionVCode);
        }
了因为在index.aspx服务器就已经把尖括号的东西解析成空了[/quote] 那我在输入框的鼠标离开事件中调这个方法,不是鼠标离开时又访问了这个方法(这个时候session已经有值了,可为什么还是空)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧