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

AJAX Discussion :

[AJAX] ResponseText toujours vide sous Firefox


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut [AJAX] ResponseText toujours vide sous Firefox
    Bonjour à tous, par curiosité j'ai voulu me mettre à Ajax qui met à mal mon navigateur préféré (Firefox)

    J'ai réussi à passer des variables de type GET en ajax sur chrome,IE et Firefox par contre quand j'utilise la methode POST, Firefox ne renvois rien, mon xhr.ResponseText est vide, ce n'est pas le cas sur le autres navigateurs testés(IE8,Chrome).

    Mon script est on ne peut plus simple.

    un fichier index.php

    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
    <script type="text/javascript">
    function getXMLHttpRequest() {
    	var xhr = null;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
     
    	return xhr;
    }
     
    function go(){
    	var xhr = getXMLHttpRequest();
    	xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                    alert(xhr.responseText); // Données textuelles récupérées
            }
    	}
    xhr.open("POST", "handlingData.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("variable1=truc");
    }
    </script>
     
    <form name="test" >
    <div id="mondiv"></div>
    <input type="submit" value="envoyer" onclick="go();"/>
    </form>
    rien de transcendant, je veux faire un alert du resultat renvoyer par handlingData.php dont voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    echo "bonjour";
    if(isset($_POST['variable1']))
            echo $_POST['variable1'];
    ?>
    Comme vous pouvez le voir j'ai fait on ne peut plus simple, donc tout les navigateur me font un alert('Bonjourtruc') sauf Firefox qui me fait un alert vide...
    je comprend pas pourquoi le responseText reste vide sous firefox.
    J'aimerais me dire que je suis responsable et que mon code est en cause mais comme seul firefox fait defaut...j'ai l'impression que ce navigateur est peu souple avec ajax en method POST.
    Je précise que je n'ai aucune erreur dans la console.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,
    N'utilise pas un submit pour appeler une fonction ajax mais un simple bouton.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" value="envoyer" onclick="go();"/>

  3. #3
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    +1 andry.aime

    Pour compléter le conseil de andry.aime, imagine ce qui se passe: ton submit envoie les données vers le server Web et en même temps passe naturellement le navigateur en position de "transition" entre deux pages. Or en parallèle tu effectues une requête AJAX asynchrone. On peut donc imaginer le dilemme événementiel: on est en cours de changement de page Web mais un événement est en attente ou en cours. Qui va l'emporter d'un point de vue chronologie ?

    Mais là où cela se corse c'est que cet événement en attente est qui plus est un appel AJAX, asynchrone: pourquoi déclencher du code côté client au retour de l'appel AJAX alors que le changement (et le chargement) de page aura peut-être eu déjà lieu ? Cela n'a pas grand sens.

    Finalement le plus simple c'est de gérer soi-même cette chronologie. Si ton appel AJAX est prépondérant sur le submit, alors fais ce que andry.aime te conseille, puis appelle le submit au retour de l'appel AJAX. Sinon, c'est que tu peux te passer de ton appel AJAX et que c'est une question d'organisation de tes scripts PHP.

    ERE

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    et bien en effet c'était bien un problème de chronologie, en enlevant le submit et en passant uniquement via java-script avec un input type button(ou n'importe quel input) en déclenchant l'appel AJAX.

    Gérer soit même la chronologie est de toute façon plus propre, ainsi on choisi si l'on désire un script avant ou après submit.

    Au final il est plutôt grave que les autres navigateurs soient plus souple avec ce genre d'étourderie, si ils sont plus souple, ca veut dire qu'ils choisissent eux même l'ordre chronologique entre l'appel AJAX et la transition des données.
    Ou peut-être faut-il juste considéré cela comme une chronologie par défaut je ne sais pas.

    En tout cas me voila prévenue pour les appels en POST merci à vous deux pour l'éclaircissement.

    Pendant que j'y suis je me permet un HS. On m'a parler d'AJAX comme une méthodologie très peu apte au référencement des pages (à cause de Javascript).

    Je me demandais si il existe des méthodes permettant justement de ne pas détruire le référencement d'un site reposant beaucoup sur AJAX ?

  5. #5
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    Lis ce tutoriel, il est très instructif: http://g-gregoire.developpez.com/tut...ement/moteurs/

    ERE

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

Discussions similaires

  1. [CKEditor] Code inutile (et gênant) généré lorsque le texte est vide sous Firefox
    Par Hervé Saladin dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 05/05/2008, 12h02
  2. [Cookies] $_COOKIE vide sous Firefox
    Par Marty000 dans le forum Langage
    Réponses: 2
    Dernier message: 13/01/2008, 17h24
  3. [DOM] noeud vide sous firefox
    Par le_chomeur dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/11/2007, 13h41
  4. Réponses: 2
    Dernier message: 23/04/2006, 21h02
  5. [AJAX] responseText est vide
    Par julien.63 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 18/04/2006, 16h28

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