AJAX fait planter IE - HTML/CSS - Programmation
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?
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
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 ^^
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?
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... |
Regarde l'url que j'ai filée
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
enfin bref, j'essayerais plus en détails ce soir
merci
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
Marsh Posté le 23-12-2005 à 10:28:57
purée vous avez aucune idée ?
Marsh Posté le 09-01-2006 à 00:53:41
bon, j'ai mis des alerts partout : IE plante donc dans la fonction processreqchange :
Code :
|
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
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 :
|
Marche nickel sous FF et IE ( 6.0.28)
Marsh Posté le 10-01-2006 à 13:47:55
cool, merci, j'essayerais ça
Marsh Posté le 11-01-2006 à 11:16:09
bon, après un rapide essai, il se trouve que ça marche pas du tout
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
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...
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 :
|
Voila mon fichier creercompte.php (du moins la partie importante) :
Code :
|
et voila mon fichier verifLogin.php (sans la liste d'includes) :
Code :
|
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
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 :
|
ça marcherait aussi bien
- pense à envoyer un header avant ton flux xml retourné, ça fait pas de mal:
Code :
|
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).
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.
Marsh Posté le 12-01-2006 à 09:53:09
oui, non mais ça j'avais compris, mais en quoi ça fait plus propre ?
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
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 !!!
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 :
|
ça devrait mieux marcher ... enfin j'espere
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
j'avais déjà essayé en fait je crois, et ça marchait pas
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
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 ...
Marsh Posté le 12-01-2006 à 13:58:21
6.0.29
les activex sont activés à fond.
veriflogininscription, je lui passe la seconde valeur vide, de base :
Code :
|
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
http://medialist.multani.info/creercompte.php
essayez de rentrer plus de 3 caractères dans "login" ou dans "mail"...
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 :
|
Marsh Posté le 12-01-2006 à 15:00:35
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"
je comprend plus rien
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
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.
Marsh Posté le 12-01-2006 à 15:41:36
voilà, c'est exactement ça !
j'ai trouvé un nouveau hack de IE
Marsh Posté le 12-01-2006 à 15:41:41
cosmoschtroumpf a écrit : |
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
Marsh Posté le 12-01-2006 à 15:47:14
normalement j'ai ajouté une fonction processReqChange, qui renvoie juste true, mais ptet qu'il aime pas ça non plus.
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.
Marsh Posté le 12-01-2006 à 16:02:11
tiens tu peux essayer ça et me dire si ça marche chez toi:
HTML
Code :
|
PHP
Code :
|
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
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)
Marsh Posté le 12-01-2006 à 16:34:35
ok on y est presque
Code :
|
ç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!
Marsh Posté le 20-01-2006 à 09:35:33
trop cool
j'ai pris ton exemple, et en fonction processReqChange, j'ai juste mis un alert "XML chargé".
ça plante toujours
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
J'ai les fonctions suivantes :
Code :
|
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.
Marsh Posté le 20-01-2006 à 12:19:17
ok, n'en jetez plus
IE n'aimait pas mon fichier php
j'ai refait à partir de ton exemple (avec le DOMDocument) et IE en veut bien
voilà, plus qu'à refaire mes scripts pour traiter correctement la réponse !
merci en tout cas
Marsh Posté le 20-01-2006 à 13:14:28
tsss ...
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.
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
j'ai pris les exemples ici : http://developer.mozilla.org/en/do [...] X:Examples
mes fonctions pour gérer les réponses :
et ma fonction qui est appelée lors d'un onkeyup sur un de mes champs :
alors pourquoi IE plante-t-il alors que FF marche impec ?
Merci !
---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux