2010-11-06 229 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