Partage
  • Partager sur Facebook
  • Partager sur Twitter

pb de script ajax sous ie8 et chrome

    8 janvier 2011 à 19:45:35

    Bonsoir à tous,

    mes scripts ajax ne fonctionnent pas sous ie8 , ni sous chrome.

    Pouvez vous me dire comment faire en sorte?
    voici un bout de code script que j'ai copié sur le site et adapté à mes besoins:


    function getXMLHttpRequest() {
    	var xmlhttp = null;
    	
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xmlhttp = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
    	
    	return xmlhttp;
    }
    
    
    function loadXMLDoc(){
    	xmlhttp=getXMLHttpRequest();
        xmlhttp.open("POST","fichier/CodePostal.xml",false); //ne fonctionne pas avec IE8
        xmlhttp.send();
    	xmlDoc = xmlhttp.responseXML;
        var txt = "";
        x = xmlDoc.getElementsByTagName("CP");
    	y = xmlDoc.getElementsByTagName("ville");
        for (i=0;i<x.length;i++){
    		if (x[i].childNodes[0].nodeValue == document.getElementById("CP1").value){
    			txt= y[i].childNodes[0].nodeValue;
    		}
        }
        document.getElementById("ville1").value = txt;
    }
    

    • Partager sur Facebook
    • Partager sur Twitter
      8 janvier 2011 à 19:50:58

      Bonsoir,

      peut-être faut-il attendre que la page appelée soit chargée
      xmlhttp.onreadystatechange = function() { 
           if(xmlhttp.readyState == 4) {
                // ton code à partir de var txt = "";
           }
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        8 janvier 2011 à 20:42:48

        Passe par de l'asynchrone, car faire de l'ajax de manière synchrone ce n'est plus de l'ajax mais du sjax et ça bloque le navigateur.

        Et je te conseille aussi de passer par une librairie JS qui fera l'ajax plus proprement que ta solution batarde
        • Partager sur Facebook
        • Partager sur Twitter
          9 janvier 2011 à 21:41:22

          @gatsu35:
          Quand tu dis solution batarde, peux tu m'expliquer la procédure pour faire en sorte d'ameliorer le code?

          sinon j'ai essayé en recopiant le tuto sur le site en passant en mode asynchrone mais ça ne marche toujours pas sous IE8, ni sous chrome

          <?xml version="1.0" encoding="utf-8"?>
          <adresse>
          	<CP>93430</CP>
          		<ville>Villetaneuse</ville>
          	<CP>92000</CP>
          		<ville>Nanterre</ville>
          	<CP>75000</CP>
          		<ville>Paris</ville>
          </adresse>
          


          Voici mon code

          function getXMLHttpRequest() {
          	var xmlhttp = null;
          	
          	if (window.XMLHttpRequest || window.ActiveXObject) {
          		if (window.ActiveXObject) {
          			try {
          				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
          			} catch(e) {
          				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          			}
          		} else {
          			xmlhttp = new XMLHttpRequest(); 
          		}
          	} else {
          		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
          		return null;
          	}
          	
          	return xmlhttp;
          }
          
          function request(callback) {
          	var xhr = getXMLHttpRequest();
          	
          	xhr.onreadystatechange = function() {
          		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
          			callback(xhr.responseXML);
          		}
          	};
          	
          	xhr.open("GET", "fichier/CodePostal.xml",true);
          	xhr.send(null);
          }
          
          
          function loadXMLDoc(odata){
          	var txt = "";
          	alert(odata);
              
                  x = odata.getElementsByTagName("CP");
          	
          	y = odata.getElementsByTagName("ville");
          	
                  for (i=0;i<x.length;i++){
          		if (x[i].childNodes[0].nodeValue == document.getElementById("CP1").value){
          			txt= y[i].childNodes[0].nodeValue;
          			alert(txt);
          		}
                  }
                  document.getElementById("ville1").value = txt;
          }
          





          • Partager sur Facebook
          • Partager sur Twitter
            10 janvier 2011 à 22:16:36

            C'est très étonnant , personne n'a déja rencontré ce genre de problème?
            • Partager sur Facebook
            • Partager sur Twitter
              12 janvier 2011 à 22:17:19

              Bonsoir à tous,

              en activant la console javascript de chrome, un message m'apparait en dessous:

              Failed to load resource
              XMLHttpRequest cannot load file:///C:/SIL/fichier/CodePostal.xml. Cross origin requests are only supported for HTTP.
              js/verif.js:42Uncaught TypeError: Cannot call method 'getElementsByTagName' of null
              js/verif.js:36Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101


              Moi et l'anglais, on est un peu faché :)
              Mon Xml est en local, Est-ce-que vous pensez que c'est ça mon problème?

              et si oui, quelqu'un aurait la solution?

              merci d'avance
              • Partager sur Facebook
              • Partager sur Twitter
                14 janvier 2011 à 21:42:32

                Mon Alert me revoie null sous chrome, alors que sous firefox : [object XMLDocument]
                • Partager sur Facebook
                • Partager sur Twitter
                  15 janvier 2011 à 23:23:50

                  Sous IE8, ça me renvoie juste object.

                  Personne n'a une idée de ce qu'il faut faire svp?
                  • Partager sur Facebook
                  • Partager sur Twitter

                  pb de script ajax sous ie8 et chrome

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown