IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] XMLHttpRequest fonctionne pas dans ie


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut [AJAX] XMLHttpRequest fonctionne pas dans ie
    Alors la j'ai une belle boulette

    L'objet xmlhttprequest est mal gerer dans ie des que je passe un parametre en javascript (le comble quand on sait que ca marche dans ff et que c'est microsoft qui a lance le produit enfin ...)

    Je m'explique : sur le clic d'un bouton j'affiche une liste en fonction de son numero :

    et la fonction affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     function affichage(){
    			getXhr();
    			// On défini ce qu'on va faire quand on aura la réponse
    			xhr.onreadystatechange = function(){
    				// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    				if(xhr.readyState == 4 && xhr.status == 200){
    					leselect = xhr.responseText;
    					// On se sert de innerHTML pour rajouter les options a la liste
    					document.getElementById('liste').innerHTML = leselect;
    				}
    			}
     
    			// Ici on va voir comment faire du post
    			xhr.open("POST","list1.php",true);
    			// ne pas oublier ça pour le post
    			xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    			// ne pas oublier de poster les arguments
    			nl = document.getElementById('numliste');
    			numliste = nl.options[nl.selectedIndex].value;
     
    			xhr.send("aff=ok&numliste="+numliste);
    		}
    cela marche dans Firefox mais pas dans ie a cause je suppose du parametre (alors il y a t il une erreur de format ?)

    car lorsque je passe un parametre en dur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     function nouvelle(){
    			getXhr();
    			// On défini ce qu'on va faire quand on aura la réponse
    			xhr.onreadystatechange = function(){
    				// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    				if(xhr.readyState == 4 && xhr.status == 200){
    					leselect = xhr.responseText;
    					// On se sert de innerHTML pour rajouter les options a la liste
    					document.getElementById('liste').innerHTML = leselect;
    				}
    			}
     
    			// Ici on va voir comment faire du post
    			xhr.open("POST","list1.php",true);
    			// ne pas oublier ça pour le post
    			xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    			// ne pas oublier de poster les arguments	
     
    			xhr.send("nouvelle=ok");
    		}
    ca passe dans les deux navigateur.
    si qqun a deja rencontrer le probleme

    au fait l'erreur generer par IE c'est
    cet objet ne gere pas cette propirete ou cette methode

  2. #2
    Membre éprouvé Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut
    Salut,

    Ta fonction getxhr ya moyen de la voir ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut
    Bien entendu !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    var xhr = null; 
     
    		function getXhr(){
    			if(window.XMLHttpRequest) // Firefox et autres
    			   xhr = new XMLHttpRequest(); 
    			else if(window.ActiveXObject){ // Internet Explorer 
    			   try {
    						xhr = new ActiveXObject("Msxml2.XMLHTTP");
    					} catch (e) {
    						xhr = new ActiveXObject("Microsoft.XMLHTTP");
    					}
    			}
    			else { // XMLHttpRequest non supporté par le navigateur 
    			   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    			   xhr = false; 
    			} 
    		}

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    perso j'utilise ça qui marche sans souci ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	switch ( true ) {	
    					case (!!window.XMLHttpRequest):
    											ReqObj=new XMLHttpRequest();
    											break;
     
    					case  (!!window.ActiveXObject):
    					            try {
                             ReqObj = new ActiveXObject("Msxml2.XMLHTTP");
                         } catch (e) {
                             ReqObj = new ActiveXObject("Microsoft.XMLHTTP");
                         }
    											break;
     
    					default :							alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    					  }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Ca, ça fonctionne sans problème également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    var xmlhttp = null;
    try{
       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e){
       try{
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
       }
       catch(e){
          xmlhttp = false;
       }
    }
     
    if(!xmlhttp && typeof XMLHttpRequest!='undefined'){
       xmlhttp = new XMLHttpRequest();
    }

  6. #6
    Membre éprouvé Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut
    Je demande ca parce que j'ai eu un probleme de ce coté ^^

    Ca aurait été bête que ca vienne de là.

    Perso mon probleme était que ma variable XMLHTTPRequest était définie en globale et que je réutilisais toujours la même. Et c'est ce que je vois dans ton code ^_^.

    J'ai aussi commencé avec le tuto de siddh et j'ai changé ensuite ma fonction suite aux conseils de Fremy.

    J'ai maintenant ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    // Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
    var pickRecentProgID = function (idList)
    {
    	// found progID flag
    	var bFound = false;
    	for(var i=0; i < idList.length && !bFound; i++)
    	{
    		try
    		{
    			var oDoc = new ActiveXObject(idList[i]);
    			o2Store = idList[i];
    			bFound = true;
    		}
    		catch (objException)
    		{
    			// trap; try next progID
    		};
    	};
    	if (!bFound)
    		throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
    	idList = null;
    	return o2Store;
    }
     
    // Retourne un nouvel objet XmlHttpRequest
    var GetXmlHttpRequest_AXO=null
    var GetXmlHttpRequest=function () {
    	if (window.XMLHttpRequest) {
    		return new XMLHttpRequest()
    	}
    	else 
    		if (window.ActiveXObject) 
    		{
    			if (!GetXmlHttpRequest_AXO) 
    			{
    				GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
    			}
    			return new ActiveXObject(GetXmlHttpRequest_AXO)
    		}
    	return false;
    }
     
    // Compatibilité avec le tuto
    getXhr=GetXmlHttpRequest;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/05/2016, 09h11
  2. Jquery ne fonctionne pas dans une page ajax/php
    Par enamorada dans le forum jQuery
    Réponses: 11
    Dernier message: 13/03/2013, 09h44
  3. La fonction CurrentDb() ne fonctionne pas dans une requête
    Par Sébastien Le Goyet dans le forum Access
    Réponses: 8
    Dernier message: 24/11/2005, 17h46
  4. Réponses: 1
    Dernier message: 27/10/2005, 21h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo