function ChangeState(state,roomid)
    {
        if(xmlHttp==null) 
            createXMLHttpRequest();
        var d=new Date();
        var url="Handler_ChangeRoomState.ashx?state="+state+"&roomid="+roomid+"&t="+d.getTime();
        xmlHttp.open("GET",url,true);
        xmlHttp.onreadystatechange=function Show()
                      {
                        var rs = xmlHttp.readyState;
                        
                        if( rs==4)
                        {   var ss = xmlHttp.status;
                            if(ss==200)
                            {
                               var str=xmlHttp.responseText;
                               if(str=="") { return; }     
                               else
                               {
                                //alert("设置完毕");
                               location=location;
                                }
                            }
                        }
                      }
        xmlHttp.send(null);
    }调用以上方法的代码是:
if(obj.key == 'true') //结帐完成,修改状态
        {
//debugger
            var arrid = new Array();
            arrid = obj.id.split(',');
            for(var i=0;i<arrid.length;i++)
            {
                if(arrid[i].toString() != "")
                {
                    ChangeState('2',arrid[i].toString());
                }
            }
        }发生的情况是这样的:
以obj.id = '17,36'为例,i=0时,执行ChangeState('2','17'),即修改ID为17的房间的状态到2,i=1时,执行ChangeState('2','36'),即修改ID为36的房间的状态到2.
但是,状况出现了。如果这样直接编译,运行发现,只修改了17的状态,并没有去修改36的状态,数据库中36房间的数据并无改变。
而如果使用在//debugger位置进行调试,又无奈地发现都执行完成了,数据库中36房间的数据也修改了。请各位朋友看一下呢,真是奇怪啊~我对ajax也完全不熟,学习中~~