日期:2014-05-19  浏览次数:20497 次

用js取Session中的值 总慢半拍,郁闷
a.aspx   中有
<asp:Image   id= "IgValidateCode "   runat= "server "   ImageUrl= "image.aspx "> </asp:Image>  

image.aspx   主要是生成一个字符串(简单理解成这样的)

当a.aspx页面显示后,image.aspx.cs文件中有Page_Load事件中Session[ "CheckCode "]   =   tmp且运行且有值。

现在点击a.aspx页面上的一个按钮   触发js中一个方法,该方法有取Session   中的值   var   vCode   =   ' <%=Session[ "CheckCode "]%> '结果没有取到值(但在CS文件中就可以取到),

当再点击按钮时,image.asx第一次Page_Load时的   tmp在Session中,但页面现实的是第二次Page_Load时的tmp

这里为什么在js中取Session值时比在   cs文件慢半拍?谢谢!


------解决方案--------------------
现在点击a.aspx页面上的一个按钮 触发js中一个方法,该方法有取Session 中的值 var vCode = ' <%=Session[ "CheckCode "]%> ' ============= 这里的session的值是a.aspx在加载时就已经从后台写到前台了. 此是图片文件还没加载,只是一个html.
------解决方案--------------------
Because the value of Session[ "CheckCode "] in the javascript is generate when the page a.aspx shows.

At the first, when you send a request to a.aspx, the Session[ "CheckCode "] is empty or the last value.
Then, the a.aspx response to you with the html and the empty Session value.
Third, the browser request the image.aspx to show the image, and this time image.aspx set the Session[ "CheckCode "] to the right value.
So, you get the last not the current value in session.

That 's all because the page_load of image.aspx is invoked after the a.aspx rendered html.
You can use ajax callback to retreive the session at server side.
:)