Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources 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 15/09/2011, 14h03   #1
Futur Membre du Club
 
Inscription : septembre 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 64
Points : 19
Points : 19
Par défaut readyState sur undefined et affichage 4 fois

Bonjour,

Je souhaite mettre à jour une liste d'articles en fonction d'un choix de type d'article. Les fonctions ci-dessous ont déjà servi dans mon appli sans problèmes, mais je m'arrache les cheveux depuis ce matin car readyState est sur undefined, et l'alerte que j'ai provisoirement mise aus lignes 40-43 affiche 4 fois cette valeur. Le Statut est bien à 200.

Voyez-vous où il y a un problème ?

Merci d'avance pour votre aide !

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
 
function getXhr()
{
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
		xhr = new XMLHttpRequest(); 
		else if(window.ActiveXObject)
		{ // Internet Explorer 
			try 
			{
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
		    }
			catch (e) 
			{
			    xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		else
		{ // XMLHttpRequest non supporté par le navigateur 
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
			xhr = false; 
		} 
    return xhr
}
 
function maj_liste_articles()		//quand l'utilisateur change le type d'articles à afficher
{
	var xhr = getXhr()
	// On défini ce qu'on va faire quand on aura la réponse
 
	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
 
			resultat = xhr.responseText;
			document.getElementById('article').innerHTML = resultat;
		}
		else
		{
			alert(xhr.readystate);
		}
	}
 
	// préparation du post
	xhr.open("POST","ajax_index.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');		// ne pas oublier ça pour le post
	var typearticle = document.getElementById('typeart');	//type d'article à afficher
	xhr.send("ajax_action=maj_liste_articles&typeart=" + typearticle.value);
}
Akazed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 14h15   #2
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Il faut respecter la casse : xhr.readyState.

Sinon, c'est mieux de faire (et plus conforme au commentaire)...
Code :
1
2
3
4
5
6
7
8
if(xhr.readyState == 4){ // On ne fait quelque chose que si on a tout reçu
	if(xhr.status == 200){ // le serveur est ok
		resultat = xhr.responseText;
		document.getElementById('article').innerHTML = resultat;
	}else{ // Affiche code HTTP
		alert(xhr.status);
	}
}
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 14h22   #3
Futur Membre du Club
 
Inscription : septembre 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 64
Points : 19
Points : 19
L'erreur de casse concerne juste mon "alert" qui est provisoire.

OK pour la correspondance syntaxe / commentaire, mais cela ne change pas l'état de readyState !
Akazed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 17h05   #4
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 574
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 574
Points : 4 077
Points : 4 077
Citation:
Envoyé par Akazed Voir le message
L'erreur de casse concerne juste mon "alert" qui est provisoire.

OK pour la correspondance syntaxe / commentaire, mais cela ne change pas l'état de readyState !
Et quelles valeurs obtiens-tu à ces 4 alertes après la correction de casse ?
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 09h06   #5
Futur Membre du Club
 
Inscription : septembre 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 64
Points : 19
Points : 19
Bonjour,
Après changement de la casse, la valeur était toujours undefined.
Je ne sais plus si c'est après changement de la casse ou après d'autres nombreux tests, mais mon navigateur m'a enfin affiché des messages d'erreur sur le retour des données.
J'ai pu corriger cela ce matin et çà marche. Pas facile de reprendre du code (pourtant commenté mais pas assez !) après plusieurs mois !

Problème résolu.

Merci pour votre aide à tous
Akazed est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h34.


 
 
 
 
Partenaires

Hébergement Web