Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2008, 16h24   #1
Membre du Club
 
Homme
Responsable d'application
Inscription : novembre 2004
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Responsable d'application
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2004
Messages : 122
Points : 47
Points : 47
Envoyer un message via MSN à Cartman.inc
Par défaut xhr.status = 0

Bonjour à tous,

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

script :
Code :
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 :
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.
Cartman.inc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 09h34   #2
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 09h39   #3
Membre du Club
 
Homme
Responsable d'application
Inscription : novembre 2004
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Responsable d'application
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2004
Messages : 122
Points : 47
Points : 47
Envoyer un message via MSN à Cartman.inc
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.
Cartman.inc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 09h43   #4
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
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 :
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 :
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 11h07   #5
Membre du Club
 
Homme
Responsable d'application
Inscription : novembre 2004
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Responsable d'application
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2004
Messages : 122
Points : 47
Points : 47
Envoyer un message via MSN à Cartman.inc
voici le code corrigé :
Code :
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
Citation:
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 ?
Cartman.inc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 11h14   #6
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
... donc tu ne récupères pas ton fichier dvd.xml ?
Citation:
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 :
var url = "le_dossier/dvd.xml";
A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 11h15   #7
Membre du Club
 
Homme
Responsable d'application
Inscription : novembre 2004
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Responsable d'application
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2004
Messages : 122
Points : 47
Points : 47
Envoyer un message via MSN à Cartman.inc
bien sur, le fichier index.html et le fichier dvd.xml sont dans le même dossier.
Cartman.inc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 11h19   #8
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
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 :
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 11h23   #9
Membre du Club
 
Homme
Responsable d'application
Inscription : novembre 2004
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Responsable d'application
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2004
Messages : 122
Points : 47
Points : 47
Envoyer un message via MSN à Cartman.inc
oui :
Code :
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 :
Citation:
status:0
Cartman.inc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h46.


 
 
 
 
Partenaires

Hébergement Web