Page 1 sur 1

Firefox = OK; IE = Pas OK

Posté : 07 mai 2006, 12:55
par logikstik
Bonjour !

Bon, un petit problème en ce dimanche pas très beau :(

Voilà, j'ai un souci avec mon code AJAX qui refuse de fonctionner sous IE alors que sous Firefox c'est impeccable.

Je vous joint mon JS :

Code : Tout sélectionner

function loginSecure() { var objHTTP = null; if(window.XMLHttpRequest) { objHTTP = new XMLHttpRequest(); } else if(window.ActiveXObject) { objHTTP = new ActiveXObject("Microsoft.XMLHTTP"); } else { alert("Votre navigateur doit accepter le JavaScript !"); return; } objHTTP.onreadystatechange = function() { if (objHTTP.readyState == 4 && objHTTP.status == 200) { document.getElementById('msgLogin').innerHTML = objHTTP.responseText; } } objHTTP.open('GET', '_functions/loginSecure.php?user='+document.login.user.value+'&pass='+document.login.pass.value, true); objHTTP.send(null); }

Et le formulaire :

Code : Tout sélectionner

<form id="login" name="login" action="javascript:loginSecure(this.form);"> <table width="199" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="27" background="_images/top_menu.gif">&nbsp; <span class="rouge"><strong>#.</strong></span> <strong>Votre compte</strong></td> </tr> <tr> <td background="_images/middle_menu.gif"><table width="95%" border="0" align="center" cellpadding="3" cellspacing="0"> <tr id="msgLogin" name="msgLogin"></tr> <tr> <td height="20">Identifiant</td> </tr> <tr> <td height="20"><input name="user" type="text" class="txt_box" id="user" size="30" /></td> </tr> <tr> <td height="20">Mot de passe</td> </tr> <tr> <td height="20"><input name="pass" type="password" class="txt_box" id="pass" size="30" /></td> </tr> <tr> <td height="30"><input name="Submit" type="submit" class="txt_box" value=" Valider " /></td> </tr> </table></td> </tr> <tr> <td><img src="_images/bottom_menu.gif" name="bottom_menu" width="199" height="9" border="0" id="bottom_menu" /></td> </tr> </table> </form>

Posté : 07 mai 2006, 15:07
par Vaedan
Pour IE, l'Ajax se base sur un ActiveX. Tu trouveras la procédure ici : http://www.codes-sources.com/ajax.aspx

Posté : 07 mai 2006, 17:10
par logikstik
J'ai lu l'article, mais je suis pas sûr de bien comprendre ce qu'il me manque en fait

Posté : 07 mai 2006, 18:54
par Truc
Un souci de paramètre peut être.

La fonction ne comporte pas de paramètre mais à l'appel tu en met un :
loginSecure(this.form)
Ou encore l'appel :
action="javascript:loginSecure"
essaie avec onsubmit, ou onclick avec un bouton

Posté : 08 mai 2006, 21:13
par logikstik
Après plusieurs essaie de onsubmit, onclick et autre paramètres diverses, ceci ne fonctionne toujours pas sous IE, je ne comprend vraiment pas d'où le poblème peut provenir

Posté : 08 mai 2006, 22:42
par Truc
détaille un peu plus ce que tu as testé et comment.

Javascript et les ActiveX sont activés sur IE ?

Posté : 08 mai 2006, 22:49
par logikstik
JavaScript et Active X sont activé sous IE, je viens de revérifié, par contre, apparemment le problème vient de l'objet "objHTTP", en fait j'ai placé un alert() à la fin du code javascript comme ceci : alert(objHTTP);.

Sous Firefox, il me renvoi bien l'objet comme ceci : [Object XMLHttpRequest]
par contre sous IE, ile me renvoi que ceci : [Object]

C'est comme ci le script ne reconnaissait pas le navigateur IE !?

Posté : 09 mai 2006, 00:33
par Truc
si l'alert affiche "object" c'est que l'objet est crée donc opérationel.

les contenu des champs passe bien dans la focntion JS ? affiche les avec un alert.

Que fait "loginSecure.php" ?

Coment récupères tu les données ?
Et au final que voudrais tu que le script fasse ? :)

Posté : 09 mai 2006, 00:38
par logikstik
les contenu des champs passe bien dans la focntion JS ? affiche les avec un alert.

Alors, j'ai essayer d'afficher les données dans un alert() mais je ny arrive pas. lol


Que fait "loginSecure.php" ?

Ce fichier permet de connecter une personne à son compte et de passer les infos en SESSION


Coment récupères tu les données ?

J'utilise la méthode GET


Et au final que voudrais tu que le script fasse ?

Authentifier les membres

Posté : 09 mai 2006, 00:48
par logikstik
Bon un peu de nouveau, j'ai fait une alert() sur le retour des résultat "alert(objHTTP.responseText);" et j'ai bien un retour d'infos, donc apparemment ces le résultat qui ne s'affiche pas

Posté : 09 mai 2006, 00:49
par Truc
Alors, j'ai essayer d'afficher les données dans un alert() mais je ny arrive pas. lol
Ben voila peut être la source du problème :-k

essaie avec:
alert('user : '+document.getElementById['user'].value);
Que fait "loginSecure.php" ?
Ce fichier permet de connecter une personne à son compte et de passer les infos en SESSION
Coment récupères tu les données ?
J'utilise la méthode GET
Eh bien oui mais j'aurais voulu voir moi :lol:

Sinon tu peux affecter les variables de session mais c'est tout tu ne veras pas de différence sans changement de page ou message qui serait renvoyé dans un div, par exemple.

Posté : 09 mai 2006, 12:35
par logikstik
Bon, je pense que je vais me faire "huer" par la foule car j'ai finalement trouver mon erreur. En fait, j'avais oublié de mettre ceci dans mon script PHP :
header('Content-type: text/html; charset=iso-8859-1');

Voilà, c'était seulement ça qui faisait que rien ne s'afficher sous IE :)

Merci beaucoup de votre aide !!!

Posté : 09 mai 2006, 12:46
par momox
Personnellement, pour les données de formulaires telles que des mots de passe, la methode POST est préconisée étant donné que le pass est transmis en clair!
@+

Posté : 09 mai 2006, 12:47
par logikstik
Oui tu as tout à fait raison et c'est pour ça que je vais modifier de suite mon script :)

Posté : 09 mai 2006, 12:53
par momox
Sage décision :wink:
@+