if (ajax.status == 200)
在这一步设置一个变量为true就行了,然后做下判断

解决方案 »

  1.   

    如果是这样呢?
    AAA();
    alert("kkk");如果AAA()还没有执行完,会先弹出alert
    怎么办呢?
      

  2.   

    TRY:
    var flag = false
    AAA(){
    ....
    if(???){flag = true}
    ....
    }
    if(flag){
    alert("kkk");
    }
      

  3.   

    dh20156(风之石) 
    你的这种办法,不会弹出alert目前我只想到用setIntervalfunction CCC(){
      if (flag)
        {
          alert("end");
          clearInterval(timename);
        }
    }var timename=setInterval("CCC();",1);
    AAA();在CCC中等待异步调用完成
    运行时IE会有点拖滞的感觉,如果计算机的性能比较差,可能会出现假死现象8(
      

  4.   

    看来你还没有理解ajax的编程方式
    异步通讯妙就妙在无须等待某个任务的完成如果你的某项任务需要依赖前一个任务的完成,那就要采用同步方式了AAA(); //1
    BBB(); //2
    alert('ok'); //3异步方式下3最先有响应,其后是1或2之一,最后是剩下的那个
    1和2具体是哪个先有响应,是不能预先确定的。否则就必须使用同步方式也就是说AAA()和BBB()都必须设计成具有独立工作能力的函数
    如果已经做到了这一点,那么“判断前面的已经执行完成”已经不重要了。甚至当页面关闭时,某项任务还未完成,也是可能的
      

  5.   

    to:xuzuning(唠叨) 
    即使异步,也应该能够知道是否已经完成了撒
    在实际开发中难免会遇到多个异步操作,且需要确定完成的顺序的情况还是HTTP的局限性啊
    Win开发中,即使异步也是有办法确定是否已经完成的如果实在不行,只有用全局变量标识的办法了
      

  6.   

    既然你要求有先后顺序,当然是同步来做,
    不过你可以在AAA来实现if (ajax.status == 200) {// no http error
            outStr = ajax.responseText;
            BBB();
          } 
    ....
      

  7.   

    感谢各位高手
    目前准备采用setInterval+全局变量的方法解决这样的问题