Partage
  • Partager sur Facebook
  • Partager sur Twitter

readyState ne va pas plus loin que 1 avec IE (AJAX)

Sujet résolu
    7 août 2009 à 8:54:37

    Bonjour tout le monde,

    J'ai créé un site qui fonctionne parfaitement avec Firefox.

    Avec internet Explorer, ça ne fonctionne pas à partir d'un certain endroit.

    C'est un calendrier qui permet de réserver une salle (le matin ou l'après-midi).

    Quand je réserve (clic droit de la souris, réserver) avec le menu contextuel que j'ai ajouté et personnalisé, il m'affiche une page blanche dont voici l'adresse :

    Citation

    http://IP/APA/



    alors que Firefox indique dans la barre d'adresse après une réservation :

    Citation

    http://IP/APA/calendrier.php



    Voici le code de la page javascript (AJAX) :



    function occupe(id_cellule,libre_ou_occupe)
    {
    	//alert(libre_ou_occupe);
    	if(libre_ou_occupe == "ESC") return false;
    	
    	//récupère la couleur du TD
    	//alert(id_cellule);
    	 var couleur_td = document.getElementById(id_cellule).bgColor;
    	
    	//alert(couleur_td);
    	
    	//alert("ici " + global_id_jour);	
    	var xhr = getXhr();
    		xhr.onreadystatechange = function()
    		{
    			if(xhr.readyState == 4 && xhr.status == 200)
    			{
    				var retour = xhr.responseText;
    				alert(retour);
    				//alert("le retour aux ici " + retour);
    				//si je renvoie une date, j'envoie un email au user si il accepte les emails
    				if ((retour.indexOf('AM')>-1) ||(retour.indexOf('PM')>-1))
    				{
    					//alert("ici");
    					var afficher_tableau = 'ok';
    					Generation_Calendrier(afficher_tableau),decision_Pierre(retour);
    					return false;
    				}
    				else if (retour.indexOf('afficher')>-1)
    				{
    					//alert("ici 2");
    					var afficher_tableau = 'ok';
    					Generation_Calendrier(afficher_tableau);
    				}
    				else
    				{
    					//alert("ici 3");
    					afficher_tableau = '';
    					Generation_Calendrier(afficher_tableau);
    				}
    			}
    		}
    		alert("ici");
    		xhr.open("POST","AJAX/occupe.php",true);
    		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    		xhr.send("id_cellule="+id_cellule+"&libre_ou_occupe="+libre_ou_occupe+"&couleur_td="+couleur_td);
    }
    


    Si je mets une alerte après cette ligne-ci :

    var couleur_td = document.getElementById(id_cellule).bgColor;
    



    Je n'arrive pas à l'alerte

    Si je mets en commentaire la ligne ci-dessus, j'arrive à l'alerte "ici" mais pas plus loin.

    Une alerte de xhr.readyState m'affiche 1 et ne va pas plus loin.


    Si quelqu'un est intéressé par tester le site, je donnerai les identifiants en privé.

    Merci d'avance.
    beegees
    • Partager sur Facebook
    • Partager sur Twitter
      7 août 2009 à 9:15:26

      Regarde ce que j'ai trouvé sur un tuto du SDZ :


      Citation : http://www.siteduzero.com/tutoriel-3-35404-les-objets-xmlhttprequest.html

      Création de l'instance


      Internet Explorer étant, comme d'habitude, un cas à part, il va falloir s'adapter aux différents navigateurs :

      Code : JavaScript
      
      var xhr; // on déclare l'instance
      if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); // Firefox, Opera, Konqueror, Safari, ...
      else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP'); // Internet Explorer
      else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); // Navigateur ancien
      


      ca peut peut-être t'aider.
      • Partager sur Facebook
      • Partager sur Twitter
        7 août 2009 à 9:17:53

        Citation : pl-94

        Regarde ce que j'ai trouvé sur un tuto du SDZ :


        Citation : http://www.siteduzero.com/tutoriel-3-35404-les-objets-xmlhttprequest.html

        Création de l'instance


        Internet Explorer étant, comme d'habitude, un cas à part, il va falloir s'adapter aux différents navigateurs :

        Code : JavaScript
        
        var xhr; // on déclare l'instance
        if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); // Firefox, Opera, Konqueror, Safari, ...
        else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP'); // Internet Explorer
        else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); // Navigateur ancien
        



        ca peut peut-être t'aider.



        Salut,

        Merci pour ta réponse.

        Voici le code que j'utilise pour mon objet xhr :

        function getXhr() {
        	var xhr = null;
        	
        	if(window.XMLHttpRequest || window.ActiveXObject) {
        		if(window.ActiveXObject) {
        			try {
        				xhr = new ActiveXObject("Msxml2.XMLHTTP"); //IE
        			} catch(e) {
        				xhr = new ActiveXObject("Microsoft.XMLHTTP"); //IE
        			}
        		} else {
        			xhr = new XMLHttpRequest(); //firefox
        		}
        	} else {
        		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
        		return null;
        	}
        	
        	return xhr;
        }
        


        Je pense qu'il est correct pour IE.

        Encore merci.
        beegees
        • Partager sur Facebook
        • Partager sur Twitter
          7 août 2009 à 9:26:12

          Tu peux peut être essayer de tester ton code avec des plugins comme Web Developper pour Firefox, mais il est possible que l'erreur vienne d'ici :
          var couleur_td = document.getElementById(id_cellule).bgColor
          où le navigateur ne trouve pas id_cellule.

          Si tu veux, je peux essayer de m'en occuper.
          • Partager sur Facebook
          • Partager sur Twitter
            7 août 2009 à 9:27:15

            Problème résolu, voici la solution :

            <li><a href="javascript:;"
            


            et non :

            <li><a href="#"
            
            • Partager sur Facebook
            • Partager sur Twitter

            readyState ne va pas plus loin que 1 avec IE (AJAX)

            × 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