XMLHTTPRequest : fonctionne sous Firefox et pas IE ???

Eléphant du PHP | 360 Messages

01 sept. 2005, 14:17

Bonjour,
j'ai trouvé sur un site un prog qui me permet d'effectuer en temps réel une recherche sur une bdd lors d'une saisie dans un champ texte. Ce code fonctionne tres bien sous Firefox mais sur IE il me met l'erreur js suivante : 'XMLHTTPRequest' est indéfini.

Voilà le code de la page index.html :

Code : Tout sélectionner

<HTML> <HEAD> <script type="text/javascript" src="request.js"> </script> </head> <body bgcolor="#CCCCCC" link=purple alink=blue vlink=red> <form action="post"> Recherche rapide par ID: <input type="text" name="rapide" id="rapide" onkeypress="majActeur();" /><br /> Nom: <input type="text" name="nom" id="nom" /><br /> Prénom: <input type="text" name="prenom" id="prenom" /><br /> </form> <a href="recupActeur.php?recherche=dorian">hgf</a>
Celui de la page request.js :

Code : Tout sélectionner

var xmlhttp = new XMLHttpRequest(); function getHTTPObject() { var xmlhttp; /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } var http = getHTTPObject(); function majActeur() { var rechRapide = document.getElementById("rapide").value; http.open("GET", url + escape(rechRapide), true); http.onreadystatechange = handleHttpResponse; http.send(null); } var url = "recupActeur.php?recherche="; function handleHttpResponse() { if (http.readyState == 4) { results = http.responseText.split(","); document.getElementById('prenom').value = results[0]; document.getElementById('nom').value = results[1]; } }
Et enfin de ma page recupActeur.php :
<?php
$recherche=$_GET['recherche'];

include("variables.php");

@$db = mysql_pconnect("$host","$compte","$mdp");
if ($db==0)
die ("connexion error");
@mysql_select_db("$base");

$req = "SELECT nom, prenom FROM utilisateur WHERE login='".$recherche."';";
$res = mysql_query($req);
if ($res) {
  $row = mysql_fetch_row($res);
  echo "$row[0],$row[1]";
  }
?> 
Voyez-vous d'où viens le problème???

Eléphant du PHP | 70 Messages

03 sept. 2005, 20:31

Si la question est XMLHTTPREQUEST marche sur IE6 .
Très bien même , c'est même développé par MS (tant pis)
Maintenant, si c'est ton code qui est pourri, là c'est plus dur à dire ...

un exemple piqué chez ROBLOCH (toutjavascript)

Code : Tout sélectionner

<html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <script type='text/javascript'> function Exemple5 () { var ListeFamille = document.forms['Forme'].elements['Famille']; var ListeEspèce = document.forms['Forme'].elements['Espèce']; var IndexFamille = ListeFamille.selectedIndex; if (IndexFamille == 0) { ListeEspèce.options.length = 0; // Raz de la ListeEspece ListeEspèce.options[0] = new Option(''); // si on avait mis options[0].value='', affichage différent de l'entrée à vide mais doc existe ? } else { var xhr_object = null; if (window.XMLHttpRequest) { // Firefox xhr_object = new XMLHttpRequest(); } else { if (window.ActiveXObject) { // Internet Explorer xhr_object = new ActiveXObject('Microsoft.XMLHTTP'); } else { // XMLHttpRequest non supporté par le navigateur alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...'); return; } } xhr_object.open("POST", "exemple5.php", true); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { eval(xhr_object.responseText); } } xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); var data = "Famille="+escape(ListeFamille.options[IndexFamille].value); xhr_object.send(data); } } </script> </head> <body> Coucou avant javascript<br> <form name='Forme'> <fieldset> <legend>Faites un choix dans la liste de gauche et observez le résultat dans celle de droite</legend> <div class="Left"> Famille : <select name='Famille' onchange="Exemple5()"> <option value='' selected></option> <option value='Bovidés'>Bovidés</option> <option value='Canidés'>Canidés</option> <option value='Equidés'>Equidés</option> <option value='Félidés'>Félidés</option> </select> Espèce : <select name='Espèce'> <option value='' selected></option> </select> </div> </fieldset> </form> Coucou après javascript<br> </body> </html>

Invité
Invité n'ayant pas de compte PHPfrance

09 sept. 2005, 10:16

perso j'utilse ceci pour créer l'objet et ça marche sous IE comme FF

Code : Tout sélectionner

if(window.XMLHttpRequest) {// Firefox this.xmlhttp = new XMLHttpRequest(); } else if(window.ActiveXObject) {// Internet Explorer this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest... Veuillez Utiliser Internet Explorer ou FireFox"); return; }
A+JYT

Lee
Invité n'ayant pas de compte PHPfrance

15 sept. 2005, 15:29

J'ai exactement le même problème... J'ai essayé toutes les méthodes,mais rien ne marche avec IE... Quelqu'un a trouvé la solution ?

Eléphant du PHP | 493 Messages

15 sept. 2005, 18:16

oui ! active les ActiveX avec IE ...

haderach
Invité n'ayant pas de compte PHPfrance

02 févr. 2007, 12:31

de mon cote ça ne marche toujours pas. J'ai activé les activeX, remplacé le code etc... rien à faire

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

05 févr. 2007, 18:37

Code : Tout sélectionner

function creerConnexion() { var connexion; connexion = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); return connexion; } var http = creerConnexion();
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

devMe
Invité n'ayant pas de compte PHPfrance

07 févr. 2007, 18:18

Ce site a peut etre la réponse, ou alors demandez directement sur place dans les commentaires.
blogxml - http://blogxml.free.fr