Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1763 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  AJAX fait planter IE

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

AJAX fait planter IE

n°1269632
cosmoschtr​oumpf
dawa powered
Posté le 18-12-2005 à 22:23:15  profilanswer
 

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
mood
Publicité
Posté le 18-12-2005 à 22:23:15  profilanswer
 

n°1269728
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-12-2005 à 09:49:27  profilanswer
 

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?

n°1269745
cosmoschtr​oumpf
dawa powered
Posté le 19-12-2005 à 10:19:11  profilanswer
 

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
n°1269763
0x90
Posté le 19-12-2005 à 10:49:27  profilanswer
 

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.
n°1269771
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-12-2005 à 10:55:54  profilanswer
 

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?

n°1269811
cosmoschtr​oumpf
dawa powered
Posté le 19-12-2005 à 11:44:02  profilanswer
 

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
n°1271663
cosmoschtr​oumpf
dawa powered
Posté le 22-12-2005 à 10:12:04  profilanswer
 

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
n°1272273
cosmoschtr​oumpf
dawa powered
Posté le 23-12-2005 à 10:28:57  profilanswer
 

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


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1279387
cosmoschtr​oumpf
dawa powered
Posté le 09-01-2006 à 00:53:41  profilanswer
 

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
n°1280170
anapajari
s/travail/glanding on hfr/gs;
Posté le 10-01-2006 à 10:37:56  profilanswer
 

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)

mood
Publicité
Posté le 10-01-2006 à 10:37:56  profilanswer
 

n°1280384
cosmoschtr​oumpf
dawa powered
Posté le 10-01-2006 à 13:47:55  profilanswer
 

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


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1281177
cosmoschtr​oumpf
dawa powered
Posté le 11-01-2006 à 11:16:09  profilanswer
 

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

n°1281183
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-01-2006 à 11:32:01  profilanswer
 

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...

n°1281207
cosmoschtr​oumpf
dawa powered
Posté le 11-01-2006 à 11:56:41  profilanswer
 

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

n°1281356
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-01-2006 à 14:42:36  profilanswer
 

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');

n°1281442
cosmoschtr​oumpf
dawa powered
Posté le 11-01-2006 à 16:01:20  profilanswer
 

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).

n°1281795
energiez
Posté le 12-01-2006 à 00:53:58  profilanswer
 

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.

n°1281857
cosmoschtr​oumpf
dawa powered
Posté le 12-01-2006 à 09:53:09  profilanswer
 

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


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1281862
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-01-2006 à 10:00:29  profilanswer
 

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

n°1281868
cosmoschtr​oumpf
dawa powered
Posté le 12-01-2006 à 10:06:57  profilanswer
 

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
n°1281872
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-01-2006 à 10:19:35  profilanswer
 

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 !!!

n°1282001
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-01-2006 à 12:31:44  profilanswer
 

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

n°1282004
cosmoschtr​oumpf
dawa powered
Posté le 12-01-2006 à 12:36:30  profilanswer
 

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
n°1282037
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-01-2006 à 13:25:09  profilanswer
 

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 ...

n°1282080
cosmoschtr​oumpf
dawa powered
Posté le 12-01-2006 à 13:58:21  profilanswer
 

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
n°1282096
cosmoschtr​oumpf
dawa powered
Posté le 12-01-2006 à 14:22:20  profilanswer
 

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
n°1282126
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-01-2006 à 14:42:42  profilanswer
 

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

n°1282156
cosmoschtr​oumpf
dawa powered
Posté le 12-01-2006 à 15:00:35  profilanswer
 

[: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
n°1282207
omega2
Posté le 12-01-2006 à 15:34:37  profilanswer
 

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.

n°1282219
cosmoschtr​oumpf
dawa powered
Posté le 12-01-2006 à 15:41:36  profilanswer
 

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


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1282220
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-01-2006 à 15:41:41  profilanswer
 

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:  

n°1282228
cosmoschtr​oumpf
dawa powered
Posté le 12-01-2006 à 15:47:14  profilanswer
 

: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
n°1282230
omega2
Posté le 12-01-2006 à 15:50:43  profilanswer
 

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.

n°1282242
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-01-2006 à 16:02:11  profilanswer
 

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
n°1282264
cosmoschtr​oumpf
dawa powered
Posté le 12-01-2006 à 16:20:41  profilanswer
 

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
n°1282283
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-01-2006 à 16:34:35  profilanswer
 

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
n°1288072
cosmoschtr​oumpf
dawa powered
Posté le 20-01-2006 à 09:35:33  profilanswer
 

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]

n°1288081
cosmoschtr​oumpf
dawa powered
Posté le 20-01-2006 à 09:43:10  profilanswer
 

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.

n°1288229
cosmoschtr​oumpf
dawa powered
Posté le 20-01-2006 à 12:19:17  profilanswer
 

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]

n°1288276
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-01-2006 à 13:14:28  profilanswer
 

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.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  AJAX fait planter IE

 

Sujets relatifs
[AJAX ?] Drag & Drop de blocs avec enregistrement de positionInfrastructure d'un site Web avec AJAX
Portail AJAX[CSS] IE n'aime pas mon code...
XmlHttpRequest (AJAX)[PHP] Test: Jeu de Carte: Manille en PHP + AJAX
[AJAX] Les boutons ne sont pas cliquables dans firefoxvo mieux voir le dernier msg de ce topic pour comprendre le 1er ??
[Jedit] 4.2 - Le plugin 'FTP' fait planter ma connexion (wifi)Une application flash+php fait planter IE !
Plus de sujets relatifs à : AJAX fait planter IE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR