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


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Points : 85
    Points
    85
    Par défaut [AJAX] xhr.status = 0
    Bonjour à tous,

    j'ai un problème avec AJAX et je ne sais pas d'ou cela peut provenir :

    script :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <script type="text/javascript">
     
    			var xhr = false;
     
    			function test() {
     
    				alert(xhr);
    				if (window.XMLHttpRequest)
    				{
    		 			xhr = new XMLHttpRequest();
    					if (xhr.overrideMimeType) 
    					{
    						xhr.overrideMimeType('text/xml');
    					}
    				} 
    				else if (window.ActiveXObject) 
    				{
    					try {
    						xhr = new ActiveXObject("Msxml2.XMLHTTP");
    					} catch (e)
    					{
    						try {
    							xhr = new ActiveXObject("Microsoft.XMLHTTP");
    						} catch (e) {}
    					}
    			    }
     
    				var url = "dvd.xml";
     
    				xhr.onreadystatechange = handleHttpResponse;
    				xhr.open("GET", url, true);
    				xhr.setRequestHeader("Content-type:text/plain", "charset=UTF-8");
     
    				xhr.send(null);
     
    			}
     
    			function handleHttpResponse() {
     
    			    if(xhr.readyState == 4 && xhr.status == 200) {
     
    			        response     = cleanXML(xhr.responseXML.documentElement);
     
    					var items    = response.getElementsByTagName("item");
    					var html     = ''; 
     
    					count        = items.length;
    					for(i = 0; i < count; i++) { 
    					    html += '<div class="item">';
    					    html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>';
    					    html += '<div class="author">R&eacute;alisateur : ';
    					    html += items[i].getElementsByTagName("director")[0].firstChild.nodeValue + '</div>';
    					    html += '<div class="price">Prix : ';
    					    html += items[i].getElementsByTagName("price")[0].firstChild.nodeValue + ' €</div>';
    					    html += '</div>';
    					}
    					document.getElementById('content').innerHTML += html;
    			    }
    				else {
    					alert('status:' + xhr.status);
    				}
    			}
     
    		</script>
    dvd.xml :
    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
    <?xml version="1.0" encoding="utf-8"?>
    <dvd>    
        <item>
            <title>Princesse Mononoké</title>
            <director>Hayao Miyazaki</director>
            <price>14,99</price>
        </item>
        <item>
            <title>Mon voisin Totoro</title>
            <director>Hayao Miyazaki</director>
            <price>19,99</price>
        </item>
        <item>
            <title>Blood, The Last Vampire</title>
            <director>Hiroyuki Kitakubo</director>
            <price>11,99</price>
        </item>
    </dvd>
    Quand j'execute le script, l'erreur provient du xhr.status qui est égal à 0.
    Est-ce que quelqu'un à déjà rencontré ce problème ?

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par Cartman.inc Voir le message
    Quand j'execute le script, l'erreur provient du xhr.status qui est égal à 0.
    es-tu sûr que ce n'est pas justement ton alert() qui bloque le traitement ?
    As-tu essayé de l'enlever ?

    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    Oui, j'en suis sur car je l'ai justement rajouter pour voir l'état du status parce que je n'avais aucun résultat.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Cartman.inc Voir le message
    Oui, j'en suis sur car je l'ai justement rajouter pour voir l'état du status parce que je n'avais aucun résultat.
    Ce n'était pas forcément ça le problème

    Par contre, un alert() bloque le script (donc ton Ajax) et risque de masquer la vraie erreur, voire d'en ajouter d'autres.
    Pour des tests, il serait préférable de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    				else {
    					document.write('status:' + xhr.status + '<br />');
    				}
    pour ne pas bloquer le script, et voir ainsi les l'enchaînement des réponses reçues de la requête ...

    EDIT : de plus, "aucun résultat" veut-il dire que l'affichage prévu n'a pas fonctionné ou que tu n'as rien reçu du serveur ?
    As-tu testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			    if(xhr.readyState == 4 && xhr.status == 200) {
    			        alert(xhr.responseXML);
    			        response     = cleanXML(xhr.responseXML.documentElement);
    (ici encore, en enlevant l'alert() du statut)

    A+

  5. #5
    Membre régulier
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    voici le code corrigé :
    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
    function handleHttpResponse() {
     
    			    if(xhr.readyState == 4 && xhr.status == 200) {
    			        document.write(xhr.responseXML);
    			        response     = cleanXML(xhr.responseXML.documentElement);
     
    					var items    = response.getElementsByTagName("item");
    					var html     = ''; 
     
    					count        = items.length;
    					for(i = 0; i < count; i++) { 
    					    html += '<div class="item">';
    					    html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>';
    					    html += '<div class="author">R&eacute;alisateur : ';
    					    html += items[i].getElementsByTagName("director")[0].firstChild.nodeValue + '</div>';
    					    html += '<div class="price">Prix : ';
    					    html += items[i].getElementsByTagName("price")[0].firstChild.nodeValue + ' €</div>';
    					    html += '</div>';
    					}
    					document.getElementById('content').innerHTML += html;
    			    }
    				else {
    					document.write('status:' + xhr.status + '<br />');
    				}
    			}
    et ca m'affiche
    status:0
    J'ai oublié de préciser que je n'avais aucun serveur. C'est une page de test dans un dossier mais je ne pense pas que ça peut venir de là, non ?

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    ... donc tu ne récupères pas ton fichier dvd.xml ?
    C'est une page de test dans un dossier
    Il est bien dans le même répertoire que la page quand même ?
    Sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var url = "le_dossier/dvd.xml";
    A+

  7. #7
    Membre régulier
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    bien sur, le fichier index.html et le fichier dvd.xml sont dans le même dossier.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Cartman.inc Voir le message
    bien sur, le fichier index.html et le fichier dvd.xml sont dans le même dossier.

    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write(xhr.responseXML);
    ne t'affiche pas son contenu ?


    En le tapant directement dans la barre d'adresse, tu le vois (le contenu) ?

    A+

  9. #9
    Membre régulier
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    oui :
    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
     <?xml version="1.0" encoding="utf-8" ?> 
    - <dvd>
    - <item>
      <title>Princesse Mononoke</title> 
      <director>Hayao Miyazaki</director> 
      <price>14,99</price> 
      </item>
    - <item>
      <title>Mon voisin Totoro</title> 
      <director>Hayao Miyazaki</director> 
      <price>19,99</price> 
      </item>
    - <item>
      <title>Blood, The Last Vampire</title> 
      <director>Hiroyuki Kitakubo</director> 
      <price>11,99</price> 
      </item>
      </dvd>
    et j'ai toujours la même chose :
    status:0

Discussions similaires

  1. ajax est xhr.status=0
    Par sebxid dans le forum jQuery
    Réponses: 1
    Dernier message: 25/05/2011, 13h16
  2. [AJAX] Ajax xhr.status renvoie 0
    Par cell dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/10/2008, 11h18
  3. Réponses: 2
    Dernier message: 06/07/2007, 13h27
  4. [AJAX] Variables status et statusText d'un XHR
    Par scrouet dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/11/2006, 09h21
  5. [AJAX] AJAX - req.status == 200
    Par julien.63 dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 10/05/2006, 15h59

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