none
为什么startRequest(OrdID,sOrderState);能够执行3次之后就不能执行啊?每一项都是这样…… RRS feed

  • 问题

  •     startRequest(OrdID,sOrderState);   //这里两个值已确定能够取到

    function startRequest(sOrderID,sOrderState) {
        xmlHttpIns = createXMLHttpRequest();
        xmlHttpIns.onreadystatechange = handleStateChange;
        xmlHttpIns.open("GET", "OrderList.aspx?OrderID=" + escape(sOrderID)+"&OrderState=" + escape(sOrderState), true);
        xmlHttpIns.send(null);
    }

     

     if (!Page.IsPostBack)
     {

            if (Request.QueryString["OrderID"] != null)
            {
                string sOrderID = Request.QueryString["OrderID"].ToString();
                string sOrderState = Request.QueryString["OrderState"].ToString();
                CxxDBConn myCn = new CxxDBConn();
                string sSql = "update orders set OrderState=" + sOrderState + " where OrderID=" + sOrderID;
                myCn.ExecuteNonQuery(sSql);
            }

    }

    为什么startRequest(OrdID,sOrderState);能够执行3次之后就不能执行啊?每一项都是这样……

    2008年12月24日 10:22

答案

  • 试试

    xmlHttpIns.open("GET", "OrderList.aspx?OrderID=" + escape(sOrderID)+"&OrderState=" + escape(sOrderState) + "&tmp="+Date.parse(new Date()), true);
    2008年12月25日 3:48
    版主
  •  cxxaspnet 写:

    孟老师,怎么回事,我什么都没改就改了你这句,然后好象就可以了,我有两处是用了ajax,都改成你这样,然后好像就没发生什么错误了



    浏览器缓存


    另外的问题已经在别的帖子回答了
    2008年12月30日 4:58
    版主

全部回复

  • startRequest(OrdID,sOrderState);   

    //这里肯定没有错,OrdID,sOrderState两个值每次都能正确传到这里,传的是gridview中某一行的相关的两个字段

     

    var xmlHttpIns;
    function createXMLHttpRequest() 
    {
        var activeKey=new Array("MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP");
        if(window.ActiveXObject)
        {
          for(var i=0;i<activeKey.length;i++)
          {
              try
              {
                  xmlHttpIns=new ActiveXObject(activeKeyIdea);
                  if(xmlHttpIns!=null)
                  return xmlHttpIns;
              }
              catch(error)
              {
                  continue;
              }
          }
          throw new Error("客户端浏览器版本过低,不支持XMLHttpRequest对象,请更新浏览器");
        }
        else if(window.XMLHttpRequest)
        {
          xmlHttpIns=new window.XMLHttpRequest();
          return xmlHttpIns;
        }
    }

     

    function startRequest(sOrderID,sOrderState) {
        xmlHttpIns = createXMLHttpRequest();
        xmlHttpIns.onreadystatechange = handleStateChange;
        xmlHttpIns.open("GET", "OrderList.aspx?OrderID=" + escape(sOrderID)+"&OrderState=" + escape(sOrderState), true);
        xmlHttpIns.send(null);
    }

     

    function handleStateChange() {
    if (xmlHttpIns.readyState == 4) {     

      if (xmlHttpIns.status == 200) {     


      }
    }
    }

     

        protected void Page_Load(object sender, EventArgs e)
        {

            if (Request.QueryString["OrderID"] != null)
            {
                string sOrderID = Request.QueryString["OrderID"].ToString();
                string sOrderState = Request.QueryString["OrderState"].ToString();
                CxxDBConn myCn = new CxxDBConn();
                string sSql = "update orders set OrderState=" + sOrderState + " where OrderID=" + sOrderID;   

                //gridview中每一行几乎能够执行3次之后就不能执行?前3次能够插入到数据库,以后就插不进去了,除非关闭浏览器重新打开个浏览器
                myCn.ExecuteNonQuery(sSql);
            }

    }

    全部代码在这里,寻求帮助...
    2008年12月25日 2:00
  • 有时候3次,有时候4次

    2008年12月25日 2:12
  • 试试

    xmlHttpIns.open("GET", "OrderList.aspx?OrderID=" + escape(sOrderID)+"&OrderState=" + escape(sOrderState) + "&tmp="+Date.parse(new Date()), true);
    2008年12月25日 3:48
    版主
  • 孟老师,你这句是什么意思

    xmlHttpIns.open("GET", "OrderList.aspx?OrderID=" + escape(sOrderID)+"&OrderState=" + escape(sOrderState) + "&tmp="+Date.parse(new Date()), true);

    ??

    我的程序不知道为什么突然不出问题了,有点后怕……

    2008年12月25日 8:19
  • 孟老师,怎么回事,我什么都没改就改了你这句,然后好象就可以了,我有两处是用了ajax,都改成你这样,然后好像就没发生什么错误了

    2008年12月25日 8:38
  • 孟老师,我还有个问题:

    是这样的,我点gridview的其中一行,弹出一个div,把这行的ID(即OrdID)传给客户端

    这个div上有保存按钮,我点保存就执行startRequest(OrdID,sOrderState);服务端负责添加数据,客户端负责修改

    gridview这一行的文字,那么我怎么根据这个ID来找到这一行的文字并做修改呢?

     

     

    我之前在服务端设置的主键如下:

            da.Fill(dt);
            GridView1.DataSource = dt;
            GridView1.DataKeyNames = new string[] { "OrderID" };
            GridView1.DataBind();

     

    2008年12月25日 8:53
  • 您好, cxxaspnet

    既然已经知道了id,可以用document.getElementById()来得到该对象。
    然后根据该对象的格式以及数据来修改了。剩下的工作就是通过dom编程来编辑了。
    你可以参考下dom方面的资料。
    http://blog.sina.com.cn/s/blog_4a1dde860100bv2m.html

    http://www.howtocreate.co.uk/tutorials/javascript/domstructure
    如果我的回答没有解决您的问题,您最好能重新开贴。
    这样可以让一个帖子只关注一个问题,同时也能让您得到更多的成员的帮助。
    谢谢!


    2008年12月26日 8:01
  •  cxxaspnet 写:

    孟老师,怎么回事,我什么都没改就改了你这句,然后好象就可以了,我有两处是用了ajax,都改成你这样,然后好像就没发生什么错误了



    浏览器缓存


    另外的问题已经在别的帖子回答了
    2008年12月30日 4:58
    版主