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] xhr.status toujours à 0


Sujet :

AJAX

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut [AJAX] xhr.status toujours à 0
    Bonjour,
    sauriez-vous pourquoi un xhr.status resterait toujours à 0 alors qu'on lui donne une valeur dans notre code :

    Aperç du code jsp attribuant une valeur au status :
    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
     if(request.getMethod().equals("GET")){
            if(liste.getTailleListe() > Integer.decode(c.getValue()))
            {
                c.setValue(String.valueOf(liste.getTailleListe()));
                response.setStatus(HttpServletResponse.SC_OK);
                pageContext.forward("Affichage.jsp");
            }
            else
            {
                response.setStatus(HttpServletResponse.SC_NO_CONTENT);
            }
        }
        else{
            response.setStatus(HttpServletResponse.SC_OK);
            pageContext.include("Stockage.jsp", false);
            pageContext.forward("Affichage.jsp");
            c.setValue(String.valueOf(liste.getTailleListe()));
        }
    Aperçu code AJAX reprenant cette valeur pour retourner qquelque chose :
    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
    function getXMLDocument(xhr, XMLDoc, id)
    {
     
        // teste si la r�ponse est disponible
    	if (xhr.readyState==4) {
    		// teste si la r�ponse est arriv�e et contient des donn�es (code HTTP = 200 : OK)
    		if (xhr.status == 200) {
    			// teste si la r�ponse est arriv�e en XML ou en texte (peut arriver pour certaines configurations d'Apache)
                            if (xhr.responseXML != null) {
    				XMLDoc= xhr.responseXML;
    			} else if (xhr.responseText != null) {
    				//si la r�ponse est en texte, transformation en XML (voir fonction fa�ade plus bas)
    				XMLDoc= parseFromString(xhr.responseText);
    			}
    			//D�commentez la ligne suivante pour voir le contenu XML obtenu (ne marche qu'avec FF)
    			//alert((new XMLSerializer()).serializeToString(XMLDoc));
     
    			//appel de la fonction de traitement qui va ajouter les donn�es au corps de la page (� �crire)
    			traiteXML (XMLDoc, id);
     
    		//teste si le code de statut est autre que le code renvoye en cas d'absence de nouveaux messages.
    		//Remarque : le code 1223 provient d'un bug avec IE : http://trac.dojotoolkit.org/ticket/2418
    		} else if (xhr.status != 204 && xhr.status != 1223) {
    		   alert("Un probleme est survenu avec la requete : "+ xhr.status);
                    }
    	}
    }
    J'avoue réfléchir sur cette erreur sans comprendre pourquoi elle retourne toujours xhr.status à 0 alors que nous l'avons "normalment" bien initialisé.

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    As-tu besoin de différencier un status à 0 d'un status à 200 ?

    Si oui, effectivement, ta question se pose.
    Par contre, sache que l'implémentation courante, en AJAX, de la fonction onreadystatechange de l'objet de transport assimile des codes retour à 0 ou à 200, les considérant tout deux comme des codes d'acceptation...
    Exemple :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xhr.onreadystatechange = function(){
    	if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)){
    		// traitements en cas de succès
    	}
    }

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut
    Je vous remercies pour cette précision.
    Au final c'est ce que j'ai fais

    C'était le code qui m'était fourni et qui n'était normalement pas à modifier, mais la personne aurait pu le mettre directement. La différenciation n'étant pas nécessaire...

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

Discussions similaires

  1. [AJAX] http_request.status toujour à 0 !
    Par islacoul12 dans le forum AJAX
    Réponses: 4
    Dernier message: 30/04/2010, 17h47
  2. [AJAX] xhr.status = 0, Mais pas toujours :~
    Par Terni dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 29/10/2008, 15h12
  3. [AJAX] Ajax xhr.status renvoie 0
    Par cell dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/10/2008, 11h18
  4. [AJAX] xhr.status = 0
    Par Cartman.inc dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/04/2008, 11h23
  5. Réponses: 2
    Dernier message: 06/07/2007, 13h27

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