2012-10-27 2 views
1

J'ai un code dans lequel j'appelle une fonction et cette fonction ayant une requête Ajax donc ça prend un peu de temps à exécuter .. mais en même temps mon code de ligne suivant est exécuté. Je veux arrêter la prochaine exécution de code de ligne jusqu'à ce que mon premier code de ligne est l'exécution ...Attendre la réponse d'une fonction dans Extjs

ici est mon code -

RWM.util.AjaxRequest.getPost(val); 

    alert('d'); 

et à l'intérieur AjaxRequestclass j'ai fonction getPost -

getPost: function(postno) { 

    Ext.Ajax.request(

     { 

     url: 'data/php/postnumber.php?mode=getById' 

      ,method: 'GET' 

      ,params: { 
       postno: postno 
      } 

      ,success: function(response) { 
       alert('s'); 

    } 

    }); 
} 

Donc ici je veux exécuter alerte ('s') puis alerte ('d')

Une idée?

+0

J'ai trouvé mon auto - RWM.util.AjaxRequest.getPost (val); setTimeout (function() {alert ('d');}, 500); – Kanchan

+2

Ce n'est pas la réponse ... Que faire si votre requête Ajax prend plus de temps que 0.5 secondes? – sha

+1

s'il vous plaît lire sur "callbacks" –

Répondre

0

Mettez alert('d'); dans un bloc de rappel comme Neil McGuigan recommande:

RWM.util.AjaxRequest.getPost(val, function() { alert('d'); }); 

getPost: function(postno, callback) { 
    Ext.Ajax.request({ 
     url: 'data/php/postnumber.php?mode=getById' 
     ,method: 'GET' 
     ,params: { 
      postno: postno 
     } 
     ,success: function(response) { 
      alert('s'); 
      callback(); 
     } 
    }); 
} 

Jetez un oeil à sample on Ext Forum.

Questions connexes