Attendre la fin d'un appel Ajax fait dans une fonction
Bonjour,
Je suis en train de développer un ensemble de pages construites de la même façon :
- appel ajax pour récupérer les colonnes d'un tableau à afficher
- affichage de la ligne d'en tête du tableau
- affichage d'une sous ligne avec un champs de recherche pour chaque colonne
- affichage des données
- affichage de la ligne footer
- affichage de la pagination et du nombre de résultat
Le problème est que l'exécution des fonctions dépend de la première instruction qui ramène les colonnes qui compose le tableau.
Alors évidemment, je pourrai faire : un appel à $.ajax et mettre l'appel à mes autres fonctions dans la partie .done, mais comme je veux factoriser mon code, j'ai créé une fonction qui fait cet appel
Code:
1 2 3 4 5 6 7 8 9 10 11
|
$.ajax({
url : url_recuperation_colonnes
type : 'post',
dataType: 'json'
})
.done(function( retour ) {
affichageEnTeteTable();
affichageSousLigneChampsRecherche();
...
}) |
Le truc c'est que je veux factoriser ce code qui est appelé dans toutes les pages. J'ai donc créé une fonction pour ce faire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
var ListeColonnes = '';
function getHeaders(){
$.ajax({
url : url_recuperation_colonnes
type : 'post',
dataType: 'json'
})
.done(function( retour ) {
ListeColonnes = retour;
})
}
affichageEnTeteTable(ListeColonnes);
affichageSousLigneChampsRecherche(ListeColonnes);
... |
Le souci est que la fonction affichageEnTeteTable s'exécute alors que la variable ListeColonnes n'est pas initialisée.
J'ai essayé d'utiliser l'objet Callbacks de jQuery, mais cela ne fonctionne pas car la fonction getHeaders semble renvoyer un OK alors que l'appel ajax n'est pas terminée. Cela me semble normal car il est asynchrone. j'ai donc essayé de faire un appel synchrone (async : false), mais l'option est dépréciée.
Auriez-vous une idée de comment faire ?
Merci de votre aide !