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 06/05/2011, 15h22   #1
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
Par défaut return d'une requête ajax

Bonjour, je souhaiterai, pour avoir une fonction générique, pouvoir faire ça:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
function ajaxSelect(id,type){
	var xhr = getXhr()
	var retour;
 
	xhr.onreadystatechange = function(){
 
		if(xhr.readyState == 4 && xhr.status == 200){
			retour = xhr.responseXML.documentElement.getElementsByTagName("message")[0].firstChild.nodeValue;
                        alert(retour);
			return retour;
		}
	}
	xhr.open("GET","PhpAjax_Select.php?id="+id+"&type="+type,true);
	xhr.send(null);
}
Code :
1
2
3
4
5
 
function test(){
	var v = ajaxSelect(2,0);
	alert(v);
}
Hors, mon 'alert(v) me renvoie undefined(contrairement à 'alert(retour))
J'imagine que c'est une histoire asynchrone synchrone ou quelques chose qui ne me permet pas de faire de return.
Mais Pourquoi ? et quelle est la solution pour finalement avoir une fonction ajax qui se chargerai juste de renvoyer du contenu sans le traiter.

Merci d'avance.
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 16h52   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 267
Points : 7 267
Bonsoir,

C'est normale parce que tu travailles en mode asynchrone, au moment ou tu faits alert(v), la requête ajax n'est pas encore terminé.

Code :
1
2
3
4
5
6
7
8
function ajaxSelect(id,type){
	var xhr = getXhr()
	var retour;
	xhr.open("GET","PhpAjax_Select.php?id="+id+"&type="+type,false);
	xhr.send(null);
	retour = xhr.responseXML.documentElement.getElementsByTagName("message")[0].firstChild.nodeValue;
	return retour;
}
A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 17h09   #3
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273

Merci, c'est bien ça, j'avais essayé de changer seulement le true en false, mais pas enlever le 'onreadystatechange'.

Encore merci, je passe ça en résolu
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento 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 09h12.


 
 
 
 
Partenaires

Hébergement Web