我在客户端执行 startrequest(x,y,1);
这方法定义如下:
 function startrequest(x,y,state)
   {
        createxmlhttprequest();
        xmlhttp.onreadystatechange = changed;
        xmlhttp.open("get","http://localhost/WebSite3/Default.aspx?x="+x+"&y="+y+"state="+state,true);
        xmlhttp.send(null);
   }
request对象的创建:
   var xmlhttp;
   
   function createxmlhttprequest()
   {
        if(window.ActiveXObject)
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if(window.XMLHttpRequest)
        {
            xmlhttp = new XMLHttpRequest();
        }
   }然后执行的服务器端方法:
     if (IsPostBack)
        {            if (Request.QueryString["x"] != null)
            {
                string s = Request.QueryString["x"] + Request.QueryString["y"] + Request.QueryString["state"];
              
                if (Session["s"] == null)
                    Session.Add("s", s);
                else
                    Session["s"] = s;
            }
        }
但实际上,异步调用并没有执行   Session.Add("s", s);或者也不能执行例如开连接,访问数据库的代码,请问这个问题怎么解决?

解决方案 »

  1.   

    xmlhttp.open("get","http://localhost/WebSite3/Default.aspx?x="+x+"&y="+y+"state="+state,true);
    get方式
    服务器
      if (IsPostBack)
    Post方式去处理,这样当然不行.
      

  2.   

    use ajax.net or altas is simple
      

  3.   

    还有,asp.net 的session 默认是根据客户提交的SessionId名的cookie来确定的,你直接用xmlhttp提交,是无法访问session的
      

  4.   

    对 用ajax.NET简单  
    你访问Session可能和你当前也页面session不是同一个或者你的ajax调用有js上的不合理
    你也可以用prototype.js里面的方法调用XMLHttprequest 这样至少保证的调用是正确的
      

  5.   

    浏览器提交自动把cookies回发服务器的,不要误导群众哈.
    改服务器if (!IsPostBack)
    和xmlhttp的方式都可以
      

  6.   

    terry,你真行,按照你的if(!ispostback)我的异步回调的结果都不执行了!肯定是if(ispostbcak)  !!!你也不要误导群众了
      

  7.   

    03能跟踪,至于05还没试过,
         if (IsPostBack)
            {            if (Request.QueryString["x"] != null)
                {
                    string s = Request.QueryString["x"] + Request.QueryString["y"] + Request.QueryString["state"];
                  
                    if (Session["s"] == null)
                        Session.Add("s", s);
                    else
                        Session["s"] = s;
                }
            }
    至于这里面的代码没执行,可能还有其他原因,我能力有限..sorry