06-02-2017, 04:59 AM
Bonjour,
Alors voilà, j'ai un petit soucis.
J'ai un code Javascript qui se divise en deux branches selon la faction du joueur.
Première branche, code basique, pas de soucis, le code s'exécute.
Deuxième branche, avant le code basique, une fonction récupère en AJAX une information qui, selon son résultat, transforme le code.
Le problème avec cette deuxième branche, c'est que le code Javascript semble aller trop vite pour prendre en compte la donnée AJAX. Chose étrange, si j'essaie d'afficher le contenu dans un alert, il m'affiche le bon contenu dans le alert, mais le code n'a pas eu le temps d'intégrer ce contenu. (D'ailleurs, la console web m'affiche que la variable n'existe pas malgré que le alert l'affiche).
En effectuant une deuxième fois cette branche, le code s'affiche correctement, puisque la première exécution a eu le temps de s'enregistrer.
Pour pallier à ce problème, j'ai fais s'exécuter ma fonction une première fois à l'ouverture du jeu. Mais mon code est sensé pouvoir s'effectuer un maximum de X fois (6 par exemple). Sauf que bien sûr, comme l'AJAX n'arrive pas au moment où il est sensé arriver, le code va s'effectuer 7 fois avant de ne plus pouvoir s'effectuer (il s'effectuerait bien 6 fois si je ne l'activais pas une première fois au lancement du jeu, mais avant un tour de retard...)
J'aimerais demander à mon code d'attendre qu'il enregistre la donnée AJAX avant de poursuivre. Y-a-t-il un moyen ?
Il s'agit de la donnée baguette_active qui a un tour de retard avant d'être prise en compte par le code. (Et même en mettant mon code dans le success après la définition de la variable "baguette_active" l'intégration est trop lente). J'ai bien un moyen de réduire le nombre d'utilisations totales pour pallier à ce problème, mais vu que cette quantité (6) s'étend sur plusieurs sessions, j'ai peur que ça me fasse un truc comme ça :
- Doit s'arrêter à 5 au lieu de 6
- Utilisation n°0 (1)
- Utilisation n°1 (2)
- Utilisation n°2 (3)
- Fin, résultat = 6 - 3 = 3, reste 3 actions
- Nouvelle utilisation n°0 (4)
- Nouvelle utilisation n°1 (5)
- Ne peut plus être utilisé, il y a eu 5 utilisations au lieu de 6...
Le casse-tête u_u
Alors voilà, j'ai un petit soucis.
J'ai un code Javascript qui se divise en deux branches selon la faction du joueur.
Première branche, code basique, pas de soucis, le code s'exécute.
Deuxième branche, avant le code basique, une fonction récupère en AJAX une information qui, selon son résultat, transforme le code.
Le problème avec cette deuxième branche, c'est que le code Javascript semble aller trop vite pour prendre en compte la donnée AJAX. Chose étrange, si j'essaie d'afficher le contenu dans un alert, il m'affiche le bon contenu dans le alert, mais le code n'a pas eu le temps d'intégrer ce contenu. (D'ailleurs, la console web m'affiche que la variable n'existe pas malgré que le alert l'affiche).
En effectuant une deuxième fois cette branche, le code s'affiche correctement, puisque la première exécution a eu le temps de s'enregistrer.
Pour pallier à ce problème, j'ai fais s'exécuter ma fonction une première fois à l'ouverture du jeu. Mais mon code est sensé pouvoir s'effectuer un maximum de X fois (6 par exemple). Sauf que bien sûr, comme l'AJAX n'arrive pas au moment où il est sensé arriver, le code va s'effectuer 7 fois avant de ne plus pouvoir s'effectuer (il s'effectuerait bien 6 fois si je ne l'activais pas une première fois au lancement du jeu, mais avant un tour de retard...)
J'aimerais demander à mon code d'attendre qu'il enregistre la donnée AJAX avant de poursuivre. Y-a-t-il un moyen ?
Code :
function infos_baguette() {
if (faction == "Fée") {
search = "search";
$.ajax({
url : 'AJAX.php',
type : 'POST',
data : 'infos_baguette='+search,
dataType : 'text',
error : function(){
disconnect();
},
success : function(info_baguettes) {
decrypt_baguette_active = JSON.parse(info_baguettes);
baguette_active = decrypt_baguette_active['nom'];
},
});
}
}
function explorer_region(){
infos_baguette();
nom_regions();
/* Affiche les différents cadres d'exploration */
document.getElementById('ressourcesA').style.display = "block";
document.getElementById('ressources').style.display = "block";
document.getElementById('type').style.display = "block";
document.getElementById('typeA').style.display = "block";
document.getElementById('recuperation').style.display = "none";
effacement_pointCardinaux();
}
Il s'agit de la donnée baguette_active qui a un tour de retard avant d'être prise en compte par le code. (Et même en mettant mon code dans le success après la définition de la variable "baguette_active" l'intégration est trop lente). J'ai bien un moyen de réduire le nombre d'utilisations totales pour pallier à ce problème, mais vu que cette quantité (6) s'étend sur plusieurs sessions, j'ai peur que ça me fasse un truc comme ça :
- Doit s'arrêter à 5 au lieu de 6
- Utilisation n°0 (1)
- Utilisation n°1 (2)
- Utilisation n°2 (3)
- Fin, résultat = 6 - 3 = 3, reste 3 actions
- Nouvelle utilisation n°0 (4)
- Nouvelle utilisation n°1 (5)
- Ne peut plus être utilisé, il y a eu 5 utilisations au lieu de 6...
Le casse-tête u_u