Page 1 sur 1

XMLHTTPRequest : fonctionne sous Firefox et pas IE ???

Posté : 01 sept. 2005, 14:17
par Snoops
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???

Réponse : ça marche même bien

Posté : 03 sept. 2005, 20:31
par lemoineo
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>

Posté : 09 sept. 2005, 10:16
par Invité
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

Posté : 15 sept. 2005, 15:29
par Lee
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 ?

Posté : 15 sept. 2005, 18:16
par Vaedan
oui ! active les ActiveX avec IE ...

Posté : 02 févr. 2007, 12:31
par haderach
de mon cote ça ne marche toujours pas. J'ai activé les activeX, remplacé le code etc... rien à faire

Posté : 05 févr. 2007, 18:37
par mere-teresa

Code : Tout sélectionner

function creerConnexion() { var connexion; connexion = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); return connexion; } var http = creerConnexion();

Posté : 07 févr. 2007, 18:18
par devMe
Ce site a peut etre la réponse, ou alors demandez directement sur place dans les commentaires.
blogxml - http://blogxml.free.fr