当前位置:编程学习 > C#/ASP.NET >>

asp.net中ajax获取session的问题

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"]的值了?
急~~~ --------------------编程问答-------------------- 只能尽顶之力了 --------------------编程问答-------------------- 代码不够详细 --------------------编程问答-------------------- 还需要哪部分的?现在在家里,公司的源码看不到,但是那个ajaxserver真的就是那么少,javascript就是放了一个异步连接,什么都没有阿~~~,整个应用都是,只要是用js异步请求的session一定会晚一步,一定要手动访问,或者刷新下那个页面,session才会更新过去,session创建和清空都是一样 --------------------编程问答-------------------- 呃~~自己顶一下 --------------------编程问答-------------------- 呃~~为什么没有人回答呀 --------------------编程问答-------------------- 该回复被版主删除 --------------------编程问答-------------------- 收藏的代码

Ajax读写Session值 

在服务器端page_load
AjaxPro.Utility.RegisterTypeForAjax(typeof(test));
this.Button_Write.Attributes.Add("onclick","WriteSession();");//写session
this.Button_Read.Attributes.Add("onclick", "ReadSession();");//读session

其他写和读的方法
/// <summary>
/// 写session
/// </summary>
/// <param name="str"></param>
[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public void WriteSession(string str)
{
Session["UserName"] = str;
}
/// <summary>
/// 读session
/// </summary>
/// <returns></returns>
[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public string ReadSession()
{
string str = "";
if (Session["UserName"] != null)
{
str = Session["UserName"].ToString();
}
return str;
}

客户端代码:
//4、访问Session的值
//写入
function WriteSession()
{
var str = "HAHA";
test.WriteSession(str,CallBack_WriteSession);
}
function CallBack_WriteSession(res)
{
if(res.error == null)
{
alert("OK");
}
else
{
alert(res.error.message);
}
}
//访问
function ReadSession()
{
test.ReadSession(CallBack_ReadSession);
}
function CallBack_ReadSession(res)
{
if(res.error == null)
{
alert(res.value);
}
else
{
alert(res.error.message);
}
} --------------------编程问答-------------------- 呵呵,谢谢你的代码,但是涉及到和旧版asp的兼容性问题。不能用这种封装的dll,需要手动连接。 --------------------编程问答-------------------- 提交cookie["sessionId"] --------------------编程问答-------------------- up --------------------编程问答-------------------- 7楼正解 --------------------编程问答-------------------- UP
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,