[Résolu] Variables... Incroyable !

Variables... Incroyable ! [Résolu] - HTML/CSS - Programmation

Marsh Posté le 26-06-2007 à 15:54:12    

Salut à tous!
 
Je suis face à un problème assez bizarre. Voici deux fonctions:
 

Code :
  1. function changeAlias_action (formulaire, alias_action, alias_option)
  2. {
  3. alias_id = document.forms[formulaire].elements[alias_option].options.value;
  4. alias_action2 = document.forms[formulaire].elements[alias_action].options[j].value;
  5. if (alias_action2 == "modif" )
  6. {
  7.  alert("Etape de modification" );
  8.  if (aliasName() != false)
  9.  {
  10.   document.getElementById('modif_alias_input').innerHTML = "<input type=\"text\" name=\"alias_name\" id=\"alias_name\" size=\"25\" value=\""+alias_name+"\" /><input type=\"hidden\" name=\"alias_id\" value=\""+alias_id+"\" />";
  11.   alert(alias_name+" 3" );
  12.  }
  13.  else
  14.  {
  15.   alert("Erreur !!!" );
  16.  }
  17. }
  18. else if (alias_action2 == "del" )
  19. {
  20.  delAlias();
  21. }
  22. else
  23. {
  24.  alert ("Erreur !"+alias_action2);
  25. }
  26. }
  27. function aliasName()
  28. {
  29. getXhr();
  30. disp("modif_alias" ); //Appelle une fonction qui fait un style:block sur un div, pas très important
  31. xhr.onreadystatechange = function() {
  32.  if (xhr.readyState == 4 && xhr.status == 200)
  33.  {
  34.   alias_name = xhr.responseText; //Contient le nom de l'alias envoyé par la page alias_req.php en fonction de alias_id (envoyé en POST)
  35.   alert(alias_name+" Etape 1" );
  36.  }
  37.  else
  38.  {
  39.   document.getElementById('modif_alias_input').innerHTML = "<img src=\"style/alias_loader.gif\" alt=\"Chargement du nom de l'alias\" />";
  40.  }
  41. }
  42. xhr.open("POST", 'alias_req.php', true);
  43. xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  44. xhr.send("var=1&action=name&alias_id="+alias_id);
  45. alert (alias_name+" Etape 2" );
  46. }


 
J'ai une liste déroulante contenant des noms d'alias à modifier, il suffit de cliquer sur un alias dans cette liste pour voir s'afficher un [i]<input type="text" value="[le_nom_de_l'alias]">. La première fonction changeAlias_action() est appelée dans un <option></option> (une liste déroulante contenant une liste d'action à effectuer sur l'alias sélectionné) avec un changeaction="changeAlias_action()".
 
Alors maintenant suivez bien ^^ Lorsque j'exécute ma page, le nom de l'alias s'affiche correctement dans le alert() de l'étape 1, le alert() de l'étape 2 me renvoie: "undefined Etape 2", et mon alert() de l'Etape 3 me renvoie la bonne valeur de l'alias en affichant le <input> avec le bon value
Je me dis donc que c'est juste un problème dans l'ordre de l'exécution, et je vire le alert() de l'étape 2, vu qu'il ne sert à rien. Je rééexécute ma page: le Alert 1 fonctionne (il affiche la bonne valeur), mais le alert 3 me renvoie "undefined Alert 3", et il m'affiche mon image ajaxloader à la place du <input>!
 
Pourquoi le fait de supprimer ce alert() change la valeur de la variable alias_name ???
 
Bonne journée, et n'hésitez pas à le dire si vous avez rien capté, je sais que c'est chiant de devoir se taper tout ça, mais je pouvais pas faire plus court :)

Message cité 1 fois
Message édité par kmeleon1 le 26-06-2007 à 16:40:03

---------------
.:: Kmeleon ::.
Reply

Marsh Posté le 26-06-2007 à 15:54:12   

Reply

Marsh Posté le 26-06-2007 à 16:11:05    

C'est incroyable...mais vrai!
 
[:benj9002]


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 26-06-2007 à 16:14:10    

Je sens que jvais avoir aucune réponse crédible -_-


---------------
.:: Kmeleon ::.
Reply

Marsh Posté le 26-06-2007 à 16:23:12    

Si je connaissais la réponse, je t'aurais aidé. Prends ton mal en patience, il y a surement une ame charitable qui va t'aider.


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 26-06-2007 à 16:26:18    

kmeleon1 a écrit :

Pourquoi le fait de supprimer ce alert() change la valeur de la variable alias_name ???


 
Parceque le "alert" est bloquant, et laisse le temps à ton callback de s'executer.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 26-06-2007 à 16:32:23    

En clair : tu mélanges du procédural avec de l'evenementiel.
 
Tu devrais avoir :
 
1) "initialisation" : je place l'image d'attente et je fais la requete ajax avec un callback et stop, je m'arrette.
 
2) "callback" : je traite la réponse, j'effectue l'action qui va bien.
 
La partie 2 sera executée automagiquement lorsque la requete ajax sera complète, pas besoin de la lancer manuellement.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 26-06-2007 à 16:39:29    

Merci beaucoup cgo2, j'ai pu trouver une solution pour mon script. A l'avenir je saurai ce genre de petits détails :)
 
Bonne journée


---------------
.:: Kmeleon ::.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed