Firefox = OK; IE = Pas OK

Eléphant du PHP | 130 Messages

07 mai 2006, 12:55

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>

Eléphant du PHP | 493 Messages

07 mai 2006, 15:07

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

Eléphant du PHP | 130 Messages

07 mai 2006, 17:10

J'ai lu l'article, mais je suis pas sûr de bien comprendre ce qu'il me manque en fait

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 mai 2006, 18:54

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

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 130 Messages

08 mai 2006, 21:13

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 mai 2006, 22:42

détaille un peu plus ce que tu as testé et comment.

Javascript et les ActiveX sont activés sur IE ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 130 Messages

08 mai 2006, 22:49

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 mai 2006, 00:33

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 ? :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 130 Messages

09 mai 2006, 00:38

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

Eléphant du PHP | 130 Messages

09 mai 2006, 00:48

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 mai 2006, 00:49

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 130 Messages

09 mai 2006, 12:35

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

Mammouth du PHP | 1511 Messages

09 mai 2006, 12:46

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

Eléphant du PHP | 130 Messages

09 mai 2006, 12:47

Oui tu as tout à fait raison et c'est pour ça que je vais modifier de suite mon script :)

Mammouth du PHP | 1511 Messages

09 mai 2006, 12:53

Sage décision :wink:
@+