index.aspx和ajaxserver.aspx处在同一应用中
index.aspx登录时赋值Session["CRM_ID"]
在index.aspx用xmlHttpRequest对象直接发送请求到ajaxserver.aspx,没有用ajax.dll。
服务器端ajaxserver.aspx.cs的Page_Load中代码如下:
if(Session["CRM_ID"] != nul)
{
Response.Write(Session["CRM_ID"].ToString());
}
else
{
Response.Write("-1");
}为什么首页登录之后,ajax获取的ResponseText是-1。当我手动在浏览器中访问一下ajaxserver.aspx之后再用ajax访问就能获取Session["CRM_ID"]的值了?
急~~~
index.aspx登录时赋值Session["CRM_ID"]
在index.aspx用xmlHttpRequest对象直接发送请求到ajaxserver.aspx,没有用ajax.dll。
服务器端ajaxserver.aspx.cs的Page_Load中代码如下:
if(Session["CRM_ID"] != nul)
{
Response.Write(Session["CRM_ID"].ToString());
}
else
{
Response.Write("-1");
}为什么首页登录之后,ajax获取的ResponseText是-1。当我手动在浏览器中访问一下ajaxserver.aspx之后再用ajax访问就能获取Session["CRM_ID"]的值了?
急~~~
就是用ajax获取的session总是比页面晚,总是需要刷新相关页面,这在session结束的时候没法实现阿
如果你在登录按钮的后台赋值,而在客户端的click中请求ajaxserver.aspx,则Session还没有赋值就请求了,会出现你说的情况。
index.aspx上有登录按钮,点登录按钮,在后台为session赋值。
客户端是index.aspx的body的onload中请求的ajaxserver.aspx
刚刚登录之后,如果我手动访问ajaxserver.aspx就能正常显示session,但是ajax访问就不能。
手动访问ajaxserver.aspx之后,ajax就能了
请问过期时间怎么设置?不知道这个东东
第一次是没有获得session,在登录之后,页面刷新,这次的onload也没有获得session。哪怕是我用一个按钮,调用的那个访问,依然是首次不能正确显示,需要手动访问下页面,才能正确显示
------------------------------------------------------------------------------你还是没有说明白问题所在。那两次在onload中没有获得Session是正常的,因为还没有执行登录按钮的后台代码。关键是你调用那个访问后,如何自动请求的那个Session。 肯定还是代码的问题,你认为是在执行后台代码之后,但未必就是在执行代码之后。关键是点击了那个按钮后,你的请求代码是在哪里写的。
我说的不够清晰么?
顺序是请求index.aspx页面——页面加载(运行了body的onload,未取出session)——点击登录按钮,后台给session赋值——客户端出现登录后的页面——页面加载(运行了body的onload,同样未取出session)
顺序是请求index........
———————————————————————————————————————————
你这个叙述中连“对象直接发送请求到ajaxserver.aspx”都没有体现,能算清楚吗?
LabelName.Text = @"<Script Language='JavaScript'>调用load中那个函数</Script>";
————————————————————————————————————————
“在index.aspx用xmlHttpRequest对象直接发送请求到ajaxserver.aspx”这个可以回答Ivy_zheng(最后一只恐龙)的问题吗?如果这个可以回答,那么Ivy_zheng(最后一只恐龙)后边问你的问题真的是算是多余的了。
session是这样实现的,你在服务器给他负值了,然后再在客户段操作页面,这样session就发送sessionId给本地cookie(或通过get方式传递),你在访问别的页面时本地cookie就发送这个存储在他里面的sessionId给服务器,服务器匹配查找后知道你的session已经有了值,这样就实现了session的跨页面访问。现在首先你在index.aspx付值后,在服务器上session有了值,但当你在ajaxserver.aspx中用xmlhttp访问时,发出请求的时候本地cookie中还未存储服务器上的seessionId,这样服务器就认为你还没有给session负值,所以你得不到预想的结果。解决方案:用一个隐藏的框架iframe访问index.aspx一下,或者其他页面也行,这样再用xmlhttp访问你就可以得到你预想的结果了。