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

Смежные вопросы