2010-11-06 228 views
0

我想知道如何在系统中等待来自服务器的AJAX请求中的答案?如何等待AJAX​​响应

var method = childs[cont].getAttribute('method'); 
      var address = childs[cont].getAttribute('address'); 
      /* 
      * Making the AJAX connection 
      * and returning the results. 
      */ 
      phone = new ConstructorXMLHttpRequest(); 
      onreadystatechange = function(){ 
       switch(phone.readyState){ 
        case 0: if(phone.readyState == 0){ 
         break; 
        } 
        case 1: if(phone.readyState == 1){ 
         break; 
        } 
        case 2: if(phone.readyState == 2){ 
         break; 
        } 
        case 3: if(phone.readyState == 3){ 
         break; 
        } 
        case 4: if(phone.readyState == 4){ 
         if(phone.status == 200){ 
          var val = phone.responseText; 
          alert([val,1]); 
          dataInsert(val); 
          break; 
         } 
         else{ 
          alert("Problemas status:"+phone.status+" state:"+phone.readyState); 
          break; 
         } 
        } 
       } 
      }; 
      phone.onreadystatechange = onreadystatechange; 
      if (method == 'POST'){ 
       phone.open(method, address, true); 
       phone.setRequestHeader("Content-type", "multipart/form-data"); 
       phone.send(xml2string(prepCall(childs[cont]))); 
      }else if(method == 'GET'){ 
       phone.open(method, address, true); 
       phone.setRequestHeader("Content-type", "multipart/form-data"); 
      } 

回答

3

您的代码看起来不错。记住AJAX是异步的,所以不要实际暂停,只要将一个回调挂接到你的ajax请求上,这个请求将在请求完成后执行。

在你的情况下,如果请求成功完成,它会提醒并执行dateInsert函数。

+0

谢谢我解决了问题,我有时会使异步,有时不会。 – hidura 2010-11-07 04:25:11