AJAX fait planter IE

AJAX fait planter IE - HTML/CSS - Programmation

Marsh Posté le 18-12-2005 à 22:23:15    

Salut
 
J'ai fait un tit script avec ajax qui permet de vérifier si un login est déjà pris.
Il marche parfaitement avec firefox, mais quand le script se lance, ça fait planter IE :o
 
j'ai pris les exemples ici : http://developer.mozilla.org/en/do [...] X:Examples
 
mes fonctions pour gérer les réponses :

Code :
  1. function loadXMLDoc(url) {
  2. // branch for native XMLHttpRequest object
  3. if (window.XMLHttpRequest) {
  4.  req = new XMLHttpRequest();
  5.  req.onreadystatechange = processReqChange;
  6.  req.open("GET", url, true);
  7.  req.send(null);
  8. // branch for IE/Windows ActiveX version
  9. } else if (window.ActiveXObject) {
  10.  /*@cc_on
  11.  @if (@_jscript_version >= 5)
  12.  try {
  13.   req = new ActiveXObject("Msxml2.XMLHTTP" );
  14.   req.onreadystatechange = processReqChange;
  15.   req.open("GET", url, true);
  16.   req.send(null);
  17.  } catch (e) {
  18.   try {
  19.    req = new ActiveXObject("Microsoft.XMLHTTP" );
  20.    req.onreadystatechange = processReqChange;
  21.    req.open("GET", url, true);
  22.    req.send(null);
  23.   } catch (E) {
  24.    req = false;
  25.   }
  26.  }
  27.  @else
  28.  req = false;
  29.  @end @*/
  30. }
  31. }
  32. function processReqChange() {
  33. // only if req shows "complete"
  34. if (req.readyState == 4) { // only if "OK"
  35.  if (req.status == 200) {
  36.   // ...processing statements go here...
  37.   response  = req.responseXML.documentElement;
  38.   method = response.getElementsByTagName('method')[0].firstChild.data;
  39.   result = response.getElementsByTagName('result')[0].firstChild.data;
  40.   eval(method + '(\'\', result)');
  41.  } else {
  42.   alert("There was a problem retrieving the XML data:\n" + req.statusText);
  43.  }
  44. }
  45. }


 
et ma fonction qui est appelée lors d'un onkeyup sur un de mes champs :
 

Code :
  1. function verifLoginInscription(input, response) {
  2. if (response != ''){
  3.  // Response mode
  4.  image = document.getElementById('imgValidLogin');
  5.  if (response == '1' || response == 1){
  6.   image.src = 'images/interface/valid-err.png';
  7.   image.alt = 'Erreur';
  8.  } else {
  9.   image.src = 'images/interface/valid-ok.png';
  10.   image.alt = 'Valide !';
  11.  }
  12. } else {
  13.  // Input mode
  14.  url  = 'traitement/ajax/veriflogin.php?log=' + input;
  15.  loadXMLDoc(url);
  16. }
  17. }


 
alors pourquoi IE plante-t-il alors que FF marche impec ?
 
Merci !


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 18-12-2005 à 22:23:15   

Reply

Marsh Posté le 19-12-2005 à 09:49:27    

C'est possible d'avoir des details?
- Quel est le message d'erreur dans IE?
- A quel moment ça plante?
- Arrives-tu à recevoir des données? en envoyer?
 

Citation :

alors pourquoi IE plante-t-il alors que FF marche impec ?


Parce que tu as dev sur IE?

Reply

Marsh Posté le 19-12-2005 à 10:19:11    

Le message d'erreur y'en a pas. IE se bloque, et je n'ai plus qu'à le fermer. Du coup je ne sais même pas si quoi que ce soit a été envoyé ou reçu.
 
J'ai un champ texte qui a un onkeyup qui appelle la fonction verifLoginInscription(). Dès qu'on tape une touche (en fait 3 mais bref), la fonction se déclenche, et IE bloque. Quand je désactive l'envoi de la requete XMLHttp (j'enlève les req.send dans le script hack), ça ne marche pas bien sur, mais ça ne plante plus.
 
Non, je développe sur FF.
 
vous pouvez voir ça ici : http://medialist.multani.info/creercompte.php
 
merci


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 19-12-2005 à 10:49:27    

T'as essayé de mettre le branchement IE avant celui de ffox dans ton LoadXML ... sinon pour savoir précisément ou ca plante, tu fais comme tout le monde, tu tartine ton code d'alert("je suis ici" ); un peu partout et tu vois le dernier popup que tu arrives a avoir ^^


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 19-12-2005 à 10:55:54    

Bin comme ça c'est pas facile de t'aider manque des pleins de bouts de code...
 
L'appel de verifLoginInscription on sait même pas ou il est, donc les paramètres que tu passes on en sait rien.
 
Mais quoi qu'il arrive, faire des appels à chaque keyUp c'est pas terrible. Pourquoi tu les fais pas sur un onChange plutôt?

Reply

Marsh Posté le 19-12-2005 à 11:44:02    

anapajari a écrit :

Bin comme ça c'est pas facile de t'aider manque des pleins de bouts de code...
 
L'appel de verifLoginInscription on sait même pas ou il est, donc les paramètres que tu passes on en sait rien.


 
Regarde l'url que j'ai filée :o
 

Citation :

Mais quoi qu'il arrive, faire des appels à chaque keyUp c'est pas terrible. Pourquoi tu les fais pas sur un onChange plutôt?


 
parce que c'est nettement plus pratique pour l'utilisateur de voir ça en temps réel, plutôt que de devoir changer de champ à chaque fois.
 
 
0x90 : je ferais des alerts, mais je crois que ça plante sur le "msxml2.xmlhttp" (quand on enlève le send de cette branche ça marche, enfin, ça fait rien mais ça plante plus).
Remarque c'est con, ça peut aussi planter sur le processreqchange... mais vu la simplicité de cette fonction ça m'étonnerait :o
enfin bref, j'essayerais plus en détails ce soir
 
merci


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 22-12-2005 à 10:12:04    

up
j'ai mis à jour le site sur l'url ( http://medialist.multani.info )
ça plante toujours :o


Message édité par cosmoschtroumpf le 22-12-2005 à 10:12:16

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 23-12-2005 à 10:28:57    

purée vous avez aucune idée ? :o


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 09-01-2006 à 00:53:41    

bon, j'ai mis des alerts partout : IE plante donc dans la fonction processreqchange :
 
 

Code :
  1. function processReqChange() {
  2.     // only if req shows "complete"
  3.     alert("processreqchange ; readystate = " + req.readyState);
  4.     if (req.readyState == 4) { // only if "OK"
  5.         alert("readystate == 4" );
  6.         if (req.status == 200) {
  7.             // ...processing statements go here...
  8.             response  = req.responseXML.documentElement;
  9.             method = response.getElementsByTagName('method')[0].firstChild.data;
  10.             result = response.getElementsByTagName('result')[0].firstChild.data;
  11.             eval(method + '(\'\', result)');
  12.         } else {
  13.             alert("There was a problem retrieving the XML data:\n" + req.statusText);
  14.         }
  15.     }
  16. }


 
et donc, lorsque la fonction se déclenche sous IE, ça m'affiche plein d'alerts que j'ai rajouté dans loadXMLdoc (et que j'ai pas mis ici puisque ça marche partout), ça m'affiche l'alert "processreqchange ; readystate = 2", et paf, ça plante. Ca ne m'affiche pas l'alert "readystate == 4" (ça ne passe jamais à 3 d'ailleurs).
 
alors comme je sais pas trop d'où ça peut venir...
 
merci de votre aide [:klem3i1]


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 10-01-2006 à 10:37:56    

Bon j'ai repris ton code et juste fait 2/3 modifs, quasiment rien juste le traitement en cas de réussite.
D'ailleurs je te conseille de plutot utiliser nodeValue que data pour récuperer la valeur d'un noeud.
Bref ça donne ça:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6. <title>Ajax</title>
  7. <script type="text/javascript">
  8.     function loadXMLDoc(url) {
  9.         // branch for native XMLHttpRequest object
  10.         if (window.XMLHttpRequest) {
  11.             req = new XMLHttpRequest();
  12.             req.onreadystatechange = processReqChange;
  13.             req.open("GET", url, true);
  14.             req.send(null);
  15.         // branch for IE/Windows ActiveX version
  16.         } else if (window.ActiveXObject) {
  17.             /*@cc_on
  18.             @if (@_jscript_version >= 5)
  19.             try {
  20.                 req = new ActiveXObject("Msxml2.XMLHTTP" );
  21.                 req.onreadystatechange = processReqChange;
  22.                 req.open("GET", url, true);
  23.                 req.send(null);
  24.             } catch (e) {
  25.                 try {
  26.                     req = new ActiveXObject("Microsoft.XMLHTTP" );
  27.                     req.onreadystatechange = processReqChange;
  28.                     req.open("GET", url, true);
  29.                     req.send(null);
  30.                 } catch (E) {
  31.                     req = false;
  32.                 }
  33.             }
  34.             @else
  35.             req = false;
  36.             @end @*/
  37.         }
  38.     }
  39.     function processReqChange() {
  40.         /* only if req shows "complete"*/
  41.         if (req.readyState == 4) { // only if "OK"
  42.             if (req.status == 200) {
  43.                 // ...processing statements go here...
  44.                 response  = req.responseXML.documentElement.tagName;
  45.  document.getElementById('ta').innerHTML = response;
  46.                 return response;
  47.             } else {
  48.                 alert("There was a problem retrieving the XML data:\n" + req.statusText);
  49.             }
  50.         }
  51.     }
  52. </script>
  53. </head>
  54. <body>
  55. <div id="ta"></div>
  56. <input type="button" value="test" onclick="loadXMLDoc('server/index.php')"/>
  57. </body>
  58. </html>


Marche nickel sous FF et IE ( 6.0.28)

Reply

Marsh Posté le 10-01-2006 à 10:37:56   

Reply

Marsh Posté le 10-01-2006 à 13:47:55    

cool, merci, j'essayerais ça [:dawa]


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 11-01-2006 à 11:16:09    

bon, après un rapide essai, il se trouve que ça marche pas du tout :o
 
en fait la meme fonction processreqchange sert pour plusieurs traitements. Du coup, comment je fais pour récupérer ce qu'elle renvoie, puisqu'elle a simplement été définie en tant que onreadystatechange ? L'idée de modifier une variable globale me plait moyen, mais si c'est la seule solution...
 
merci

Reply

Marsh Posté le 11-01-2006 à 11:32:01    

humm t'es sur que ton serveur renvoie quelque chose?
 
Parce que le code que je t'ai donné avec un bout de code php dont je me sers sur une appli ajax marche très bien...

Reply

Marsh Posté le 11-01-2006 à 11:56:41    

oui oui, le script marche parfaitement sur FF et opera.
 
bon je vais détailler plus.
 
Voila mon fichier javascript qui ne marche pas (il y a toujours les alerts partout) :
 

Code :
  1. /*
  2. * VALIDERLOGIN
  3. * BUT :
  4. * valider le login lors de l'inscription
  5. */
  6. function validerLogin(valeur) {
  7. if (valeur.length >= 3) {
  8.  verifLoginInscription(valeur, '');
  9. } else {
  10.  document.getElementById('imgValidLogin').src = 'images/interface/valid-vide.png';
  11.  document.getElementById('imgValidLogin').alt = 'Validation';
  12. }
  13. }
  14. /*
  15. * VALIDERMAIL
  16. * BUT :
  17. * valider le mail lors de l'inscription
  18. */
  19. function validerMail(valeur) {
  20. if (valeur.length >= 5) {
  21.  if (valeur.indexOf("@",0) >= 1 && valeur.indexOf(".",0) >= 2) {
  22.   verifMailInscription(valeur, '');
  23.  }
  24. } else {
  25.  document.getElementById('imgValidMail').src = 'images/interface/valid-vide.png';
  26.  document.getElementById('imgValidMail').alt = 'Validation';
  27. }
  28. }
  29. /* *************************************************** Fonctions AJAX ***************************************************** */
  30. /* *************************** http://www.xml.com/pub/a/2005/02/0 [...] quest.html ********************************** */
  31. var req;
  32. /*
  33. * LOADXMLDOC
  34. * BUT :
  35. * charge un fichier XML, et lance une fonction pour traiter ce fichier
  36. */
  37. function loadXMLDoc(url) {
  38. // branch for native XMLHttpRequest object
  39. if (window.XMLHttpRequest) {
  40.  req = new XMLHttpRequest();
  41.  alert("XMLHttpRequest créé" );
  42.  req.onreadystatechange = processReqChange;
  43.  alert("onreadystatechange modifié" );
  44.  req.open("GET", url, true);
  45.  alert("objet ouvert" );
  46.  req.send(null);
  47.  alert("objet envoyé" );
  48. // branch for IE/Windows ActiveX version
  49. } else if (window.ActiveXObject) {
  50.  /*@cc_on
  51.  @if (@_jscript_version >= 5)
  52.  try {
  53.   req = new ActiveXObject("Msxml2.XMLHTTP" );
  54.   alert("Msxml2.XMLHTTP créé" );
  55.   req.onreadystatechange = processReqChange;
  56.   alert("onreadystatechange modifié" );
  57.   req.open("GET", url, true);
  58.   alert("objet ouvert" );
  59.   req.send(null);
  60.   alert("objet envoyé" );
  61.  } catch (e) {
  62.   try {
  63.    req = new ActiveXObject("Microsoft.XMLHTTP" );
  64.    alert("Microsoft.XMLHTTP créé" );
  65.    req.onreadystatechange = processReqChange;
  66.    alert("onreadystatechange modifié" );
  67.    req.open("GET", url, true);
  68.    alert("objet ouvert" );
  69.    req.send(null);
  70.    alert("objet envoyé" );
  71.   } catch (E) {
  72.    req = false;
  73.    alert("req = false" );
  74.   }
  75.  }
  76.  @else
  77.  req = false;
  78.  alert("req = false" )
  79.  @end @*/
  80. } else {
  81.  req = false;
  82.  alert("req = false" );
  83. }
  84. }
  85. /*
  86. * PROCESSREQCHANGE
  87. * BUT :
  88. * effectue le traitement sur le fichier XML chargé précédemment
  89. */
  90. function processReqChange() {
  91. // only if req shows "complete"
  92. alert("processreqchange : début ; readystate : " + req.readyState);
  93. if (req.readyState == 4) { // only if "OK"
  94.  alert("readystate == 4" );
  95.  if (req.status == 200) {
  96.   alert("status == 200" )
  97.   // ...processing statements go here...
  98.   response  = req.responseXML.documentElement;
  99.   alert("req.responseXML affecté à response" );
  100.   method = response.getElementsByTagName('method')[0].firstChild.data;
  101.   result = response.getElementsByTagName('result')[0].firstChild.data;
  102.   alert("valeurs du XML affectées à des variables" );
  103.   eval(method + '(\'\', result)');
  104.   alert("eval de la méthode" );
  105.  } else {
  106.   alert("There was a problem retrieving the XML data:\n" + req.statusText);
  107.  }
  108. }
  109. }
  110. /* ******************************************** Fonctions de traitement des résultats AJAX *************************************** */
  111. /*
  112. * VERIFLOGININSCRIPTION
  113. * BUT :
  114. * vérifier la validité du login entré à l'inscription
  115. */
  116. function verifLoginInscription(input, response) {
  117. if (response != ''){
  118.  // Response mode
  119.  image = document.getElementById('imgValidLogin');
  120.  if (response == '1' || response == 1){
  121.   image.src = 'images/interface/valid-err.png';
  122.   image.alt = 'Erreur';
  123.  } else {
  124.   image.src = 'images/interface/valid-ok.png';
  125.   image.alt = 'Valide !';
  126.  }
  127. } else {
  128.  // Input mode
  129.  url  = 'traitement/ajax/veriflogin.php?log=' + input;
  130.  loadXMLDoc(url);
  131. }
  132. }
  133. /*
  134. * VERIFMAILINSCRIPTION
  135. * BUT :
  136. * vérifier la validité du mail entré à l'inscription
  137. */
  138. function verifMailInscription(input, response) {
  139. if (response != ''){
  140.  // Response mode
  141.  image = document.getElementById('imgValidMail');
  142.  if (response == '1' || response == 1){
  143.   image.src = 'images/interface/valid-err.png';
  144.   image.alt = 'Erreur';
  145.  } else {
  146.   image.src = 'images/interface/valid-ok.png';
  147.   image.alt = 'Valide !';
  148.  }
  149. } else {
  150.  // Input mode
  151.  url  = 'traitement/ajax/verifmail.php?mail=' + input;
  152.  loadXMLDoc(url);
  153. }
  154. }


 
 
Voila mon fichier creercompte.php (du moins la partie importante) :
 

Code :
  1. <form action="traitement/creercompte.php" method="post">
  2.    <p><label for="nom">Nom :</label>
  3.    <span><input type="text" name="nom" /></span></p>
  4.    <p><label for="prenom">Prénom :</label>
  5.    <span><input type="text" name="prenom" /></span></p>
  6.    <p><label for="email">Email :</label>
  7.    <span><input type="text" name="email" onkeyup="validerMail(this.value)" />
  8.    <img src="images/interface/valid-vide.png" alt="Validation" id="imgValidMail" /></span></p>
  9.    <p><label for="login">Login :</label>
  10.    <span><input type="text" name="login" onkeyup="validerLogin(this.value)" />
  11.    <img src="images/interface/valid-vide.png" alt="Validation" id="imgValidLogin" /></span></p>
  12.    <p><label for="pass">Pass :</label>
  13.    <span><input type="password" name="pass" id="pass" /></span></p>
  14.    <p><label for="passverif">Vérification mot de passe :</label>
  15.    <span><input type="password" name="passverif" id="passverif" onkeyup="correspPass('pass', 'passverif')" />
  16.    <img src="images/interface/valid-vide.png" alt="Validation" id="imgValidPass" /></span></p>
  17.    <p><input type="submit" value="Créer" /></p>
  18.    <p><a href="index.php" onclick="window.close()">Annuler</a></p>
  19.   </form>


 
et voila mon fichier verifLogin.php (sans la liste d'includes) :
 

Code :
  1. <?
  2. function loginUtilise($log) { 
  3. if (isset($log)){
  4.  if (ereg("^[a-zA-Z0-9]{3,50}$", $log)) {
  5.   if (compter(requete("SELECT 1 FROM utilisateurs WHERE login LIKE '$log'" )) > 0) {
  6.    return '1';
  7.   } else {
  8.    return '0';
  9.   }
  10.  } else {
  11.   return '1';
  12.  }
  13. } else {
  14.  return '0';
  15. }
  16. }
  17. ?>
  18. <?php echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>'; ?>
  19. <response>
  20. <method>verifLoginInscription</method>
  21. <result><?= loginUtilise($_GET['log']) ?></result>
  22. </response>


 
 
donc la fonction processreqchange, il faut qu'elle reste générique (je vais la réutiliser encore ailleurs), et qu'elle ne modifie rien sur la page. J'aimerais bien récupérer ce qu'elle renvoie dans ta version (avec le return response), mais je ne vois pas comment faire (c'est probablement super facile, mais là, je vois pas du tout).
 
en fait j'avais réutilisé la technique que j'avais trouvé sur le net (mettre dans un fichier xml un peu générique), mais je suis pas sur que ce soit la meilleure idée. Je voudrais bien changer de technique, mais je commence à etre perdu et à plus tout comprendre.
 
merci

Reply

Marsh Posté le 11-01-2006 à 14:42:36    

Bon j'ai pas le temps de tout tester dsl, j'essayerais ptet ce soir de chez moi.
 
Mais 2/3 remarques quand même:
- C'est pas parce que c'est de l'ajax que tu es obligé de faire du GET. Tu peux très bien le faire en POST et je trouve ça plus propre. Perso, moi j'envoie un vrai flux xml en post plutôt que null. Ce flux est parsé coté serveur ( création d'un obj DOM et loadXML dedans ) et je fais mes traitements en fonctions des noeuds
- ta fonction LoginUtilise est longue pour rien, tu pourrais faire:

Code :
  1. function loginUtilise($log) {
  2.   if (isset($log)){
  3.     if (ereg("^[a-zA-Z0-9]{3,50}$", $log)) {
  4.       if (compter(requete("SELECT 1 FROM utilisateurs WHERE login LIKE '$log'" )) > 0)){
  5.         return '1';
  6.       }
  7.     }
  8.   }
  9.   return '0';
  10. }

ça marcherait aussi bien
- pense à envoyer un header avant ton flux xml retourné, ça fait pas de mal:

Code :
  1. header('Content-Type: text/xml');

Reply

Marsh Posté le 11-01-2006 à 16:01:20    

ca change quoi que ce soit en get ou en post ?
sinon, j'ai bien un header (j'avais aussi changé l'encoding qui chiait un peu).

Reply

Marsh Posté le 12-01-2006 à 00:53:58    

Si je ne dit aps de bétise :
 
Get : faut un ? devant la chaine que tu envoie
 
Post : pas de ?, mais faut préciser les entete je crois.

Reply

Marsh Posté le 12-01-2006 à 09:53:09    

oui, non mais ça j'avais compris, mais en quoi ça fait plus propre ? :o


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 12-01-2006 à 10:00:29    

ça t'evite d'avoir tes données qui passent "en clair"...

Reply

Marsh Posté le 12-01-2006 à 10:06:57    

ben, en meme temps, faut le vouloir pour le voir, et avec web developper (l'extension FF), on peut transformer les post en get et les get en post, donc retrouver dans l'url les données postées en post... donc l'un dans l'autre, passer les données en get me fait moins chier :D


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 12-01-2006 à 10:19:35    

c'est la que tu as pas compris ce que je disais :)
Perso j'envoie un flux en post ( par ailleurs je n'ai pas de formulaire dans mon appli).
 
Mais bon tout ça, ça fait pas avancer ton pb !!!

Reply

Marsh Posté le 12-01-2006 à 12:31:44    

C'est ton loadXMLDoc qu'est tout foireux, avec IE ça te retourne false donc forcément tu passes jamais à 4 sur le readyState
 
Essaye avec ça

Code :
  1. function loadXMLDoc(url) {
  2.         if (window.ActiveXObject){
  3.           req = new ActiveXObject("Microsoft.XMLHTTP" );
  4.         } else if (window.XMLHttpRequest) {
  5.           req = new XMLHttpRequest();
  6.         } else {
  7.                   alert("XMLHttpRequest not supported" );
  8.         }
  9.         req.open("GET", url, true);
  10.         req.send(null);
  11.         req.onreadystatechange = processReqChange;
  12.       }


ça devrait mieux marcher ... enfin j'espere

Reply

Marsh Posté le 12-01-2006 à 12:36:30    

ben ça fait plus planter, mais ça me dit qu'un composant activex ne peut pas créer un objet [:dugnou29]
 
j'avais déjà essayé en fait je crois, et ça marchait pas :o


Message édité par cosmoschtroumpf le 12-01-2006 à 12:37:15

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 12-01-2006 à 13:25:09    

T'as quoi comme IE?
parce que j'ai testé sur le mien (6.0.28) et ça marche nickel :o
Vérifie aussi ton paramètrage sur la gestion des activeX
 
Par ailleurs tu as 2/3 erreurs dans le reste de ton code, par exemple  verifLoginInscription prends 2 arguments et tu ne lui en passe qu'un ...

Reply

Marsh Posté le 12-01-2006 à 13:58:21    

6.0.29 :o
les activex sont activés à fond.
veriflogininscription, je lui passe la seconde valeur vide, de base :
 

Code :
  1. if (valeur.length >= 3) {
  2.         verifLoginInscription(valeur, '');
  3. }


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 12-01-2006 à 14:22:20    

c'est dingue ça
effectivement microsoft.xmlhttp est utilisé partout pour IE, mais sur mon site, ça marche pas :heink:
http://medialist.multani.info/creercompte.php
essayez de rentrer plus de 3 caractères dans "login" ou dans "mail"...


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 12-01-2006 à 14:42:42    

bin la ta page elle pète mais ça a pas grand chose a voir avec Ajax:

Code :
  1. Error: processReqChange is not defined
  2. Source File: http://medialist.multani.info/scripts.js
  3. Line: 168

Reply

Marsh Posté le 12-01-2006 à 15:00:35    

[:pingouino]
avec les parametres de securite par defaut de IE, j'ai pas cette erreur, j'ai juste "un composant activex ne peut pas créer un objet" [:pingouino]
je comprend plus rien [:zytrasnif]
 
 
 
sur bla²@web on m'a dit de regarder XHRConnection, je vais y jeter un oeil, et si ça me va pas ou si ça marche pas, je repasserais
 
merci [:marc]

Message cité 1 fois
Message édité par cosmoschtroumpf le 12-01-2006 à 15:01:47

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 12-01-2006 à 15:34:37    

C'est mùarrant, je saisie "toto" dans le mail et j'essaye de saisir "login" dans le pseudo, mais arrivé à "logi", ca me fige le navigateur. Tout planté l'IE.

Reply

Marsh Posté le 12-01-2006 à 15:41:36    

voilà, c'est exactement ça !
 
 
 
 
j'ai trouvé un nouveau hack de IE [:dawa]


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 12-01-2006 à 15:41:41    

cosmoschtroumpf a écrit :

[:pingouino]
avec les parametres de securite par defaut de IE, j'ai pas cette erreur, j'ai juste "un composant activex ne peut pas créer un objet" [:pingouino]
je comprend plus rien [:zytrasnif]


T'as pas de fonction processReqChange, tu les as changées en "Qui_marche_pas" ou je sais pas quoi c'est normal que ça pète
 

omega2 a écrit :

C'est mùarrant, je saisie "toto" dans le mail et j'essaye de saisir "login" dans le pseudo, mais arrivé à "logi", ca me fige le navigateur. Tout planté l'IE.


Yep ça fait pareil, mon IE il meurt ...
 
Remarque cosmoschtroumpf, prends le chose du bon coté, tu viens de découvrir un nouveau bug d'IE  :whistle:  

Reply

Marsh Posté le 12-01-2006 à 15:47:14    

:lol:
 
normalement j'ai ajouté une fonction processReqChange, qui renvoie juste true, mais ptet qu'il aime pas ça non plus.


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 12-01-2006 à 15:50:43    

Au cas où, quand tu crais l'adresse du fichier à récupérer, mets là en entier, avec le protocole et le nom de domaine. Je sais pas si ca joue, mais ca pourait.

Reply

Marsh Posté le 12-01-2006 à 16:02:11    

tiens tu peux essayer ça et me dire si ça marche chez toi:
HTML

Code :
  1. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  2. <head>
  3.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  4.   <title>Test</title>
  5.   <script type="text/javascript">
  6.       var req;
  7.       function loadXMLDoc(url) {
  8.         // branch for native XMLHttpRequest object
  9.         if (window.ActiveXObject){
  10.           req = new ActiveXObject("Microsoft.XMLHTTP" );
  11.         } else if (window.XMLHttpRequest) {
  12.           req = new XMLHttpRequest();
  13.         } else {
  14.           alert("XMLHttpRequest not supported" );
  15.         }
  16.         req.open("GET", url, true);
  17.         req.send(null);
  18.         req.onreadystatechange = processReqChange;
  19.       }
  20.       function processReqChange() {
  21.           if (req.readyState == 4) {
  22.               if (req.status == 200) {
  23.                   alert(req.responseXML.documentElement.tagName);
  24.               } else {
  25.                   alert("There was a problem retrieving the XML data:\n" + req.statusText);
  26.               }
  27.           }
  28.       }
  29.       function test(){
  30.          url  = 'test.php';
  31.          loadXMLDoc(url);
  32.       }
  33. </script>
  34. </head>
  35. <body >
  36.   <input type="button" value="test" onclick="test()"/>
  37. </body>
  38. </html>


PHP

Code :
  1. <?php
  2.   $rep = new DOMDocument("1.0" );
  3.   $rep->loadXML('<pouet/>');
  4.   header('Content-Type: text/xml');
  5.   echo $rep->saveXML();
  6. ?>


 
Parce que la on peut pas faire plus et je suis sur que ça doit marcher!
 
edit:
et si ça marche toujours pas change le Microsoft.XMLHTTP en Msxml2.XMLHTTP

Message cité 1 fois
Message édité par anapajari le 12-01-2006 à 16:03:45
Reply

Marsh Posté le 12-01-2006 à 16:20:41    

alors, j'ai les parametres de securite par defaut de IE, et avec ton script il me met toujours le message d'erreur comme quoi il activex ne peut pas créer d'objet.
 
Avec Msxml2, ça marche (ça fait pouet)


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 12-01-2006 à 16:34:35    

ok on y est presque :)
 

Code :
  1. function loadXMLDoc(url) {
  2.        if (window.ActiveXObject){
  3.          try {
  4.            req = new ActiveXObject("Msxml2.XMLHTTP" );
  5.          } catch (e) {
  6.            try {
  7.              req = new ActiveXObject("Microsoft.XMLHTTP" );
  8.            } catch (E) {
  9.              req = false;
  10.          }
  11.        } else if (window.XMLHttpRequest) {
  12.          req = new XMLHttpRequest();
  13.        } else {
  14.          alert("XMLHttpRequest not supported" );
  15.        }
  16.        req.open("GET", url, true);
  17.        req.send(null);
  18.        req.onreadystatechange = processReqChange;
  19.      }


ça doit marcher avec mon exemple et faire pouet ( c'est le rootNode de flux retourné).  
 
tu prends c'te fonction tu la recopie dans ta page, à partir de la on voit ce qui pose encore problème!


Message édité par anapajari le 12-01-2006 à 16:36:00
Reply

Marsh Posté le 20-01-2006 à 09:35:33    

trop cool [:dawa]
j'ai pris ton exemple, et en fonction processReqChange, j'ai juste mis un alert "XML chargé".
 
 
 
ça plante toujours [:moule_bite]

Reply

Marsh Posté le 20-01-2006 à 09:43:10    

Par contre j'ai essayé d'utiliser la librairie XHRConnection, et ça marche pas non plus :o
 
J'ai les fonctions suivantes :
 

Code :
  1. function validerLogin(login) {
  2. if (login.length >= 3) {
  3.  // ouverture du fichier XML de vérification de login valide
  4.  var XHR = new XHRConnection();
  5.  XHR.setDebugOn();
  6.  XHR.appendData("log", login);
  7.  XHR.sendAndLoad('../traitement/ajax/veriflogin.php', 'POST', 'verifLoginInscription');
  8. } else {
  9.  document.getElementById('imgValidLogin').src = 'images/interface/valid-vide.png';
  10.  document.getElementById('imgValidLogin').alt = '';
  11. }
  12. }
  13. function verifLoginInscription(obj) {
  14. alert("entree veriflogininscription" );
  15. alert(obj.responseText);
  16. tab = obj.responseXML.getElementsByTagName('result');
  17. alert(tab.length);
  18. // traitement du résultat
  19. image = document.getElementById('imgValidLogin');
  20. if (response == '1' || response == 1){
  21.  image.src = 'images/interface/valid-err.png';
  22.  image.alt = 'Erreur';
  23. } else {
  24.  image.src = 'images/interface/valid-ok.png';
  25.  image.alt = 'Valide !';
  26. }
  27. }


 
 
Mais ça ne me fait jamais d'alert de verifLoginInscription... :/ et le setDebugOn de la fonction ne sert à rien, même quand je change l'url à charger ça ne me met pas d'erreur.

Reply

Marsh Posté le 20-01-2006 à 12:19:17    

ok, n'en jetez plus :o
 
IE n'aimait pas mon fichier php :o
 
j'ai refait à partir de ton exemple (avec le DOMDocument) et IE en veut bien [:moule_bite]
 
voilà, plus qu'à refaire mes scripts pour traiter correctement la réponse ! [:marc]
 
merci en tout cas [:dawa]

Reply

Marsh Posté le 20-01-2006 à 13:14:28    

tsss ... :D
 
Par contre je reste toujours scéptique sur un appel avec chaque keyUp. Si tu tapes un login de 10 caractères tu vas quand même faire 7 appels au serveur, et pas dit que tu es le "temps" d'afficher chaque message reçu.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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