Utilisation d'AJAX en mode synchrone
Bonjour,
je souhaite réaliser une fonction (en javascript orienté objet) simple qui créée un élement en base de données (via AJAX) et qui récupère l'id créée par MySQL pour l'affecter à l'objet.
voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
function lobby(){
this.id='549';
this.create=function()
{
$.ajax({
url : 'requete_ajax.php',
type : 'GET',
data : { action: 'newLobby'} ,
async:false,
dataType :'text',
success : this.setId
});
}
this.setId=function()
{
this.id=arguments[0];
console.log('setId: '+this.id);
}
} |
la page requete_AJAX.php créé un nouvel enreg dans la base et retourne l'id créé par MySQL (que je récupère avec arguments[0])
Cette partie là fonctionne.
Quand j'utilise la fonction (ou plûtot l'objet) dans mon code javascript:
Code:
1 2 3 4
|
lobby=new lobby(); // creation de l'objet
lobby.create(); // creation du lobby en bdd et affectation de l'id
console.log('lobbyId: '+lobby.id); |
Ce que m'affiche la console :
setId: 40 (l'id créé en base de données) => OK
lobbyId: 549 (l'id par défaut de l'objet lobby)
=> alors qu'entre temps la fonction setId aurait du affecter la valeur '40' à 'id' et non conserver la valeur par défaut '549'.
Je pense que la fonction console.log('lobbyId: '+lobby.id) est exécutée avant que l'AJAX n'est retourné le nouvel id et est lancé la fonction setId().
Je pensais qu'en mettant le paramètre async:false, le navigateur attendait la réponse ajax avant d'exécuter la suite du code js?
Quelle est mon erreur ? quelle serait la solution ?
Merci pour vos conseils.