Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/03/2013, à 10:33

Morgiver

[javascript]Récupération de données

Salut smile

J'ai un petit soucis de récupération de données dans une fonction :

function auth(func)
{
	$.ajax({
		type: 'GET',
		url: 'include/class/auth/class.auth.php?func='+func,
		timeout: 3000,
		success: function(ajax) {
			return ajax;
		},
		error: function() {
		alert('La requête n\'a pas abouti'); }
	});
       //  A partir d'Ici j'ai beau essayer tout et n'importe quoi, pas moyen de récupérer la valeur de ajax et de la retournée.
}

Je n'arrive pas à récupérer la variable ajax dans l'option success.
Je peux faire un alert à l'intérieur de la fonction, mais j'aimerais pouvoir sortir les données de la fonction pour pouvoir en faire ce que je veux.
En faisant à la fin de la fonction un return ajax par exemple. Mais si je test, rien n'est renvoyé hmm

Donc je ne sais pas trop comment je peux retourner les données.

Merci d'avance,

Morgiver

Dernière modification par Morgiver (Le 13/03/2013, à 10:34)

Hors ligne

#2 Le 13/03/2013, à 11:52

tiramiseb

Re : [javascript]Récupération de données

Salut, le langage Javascript est évènementiel.

Cela signifie que, lorsque tu fais $.ajax avec jQuery (ou tout équivalent avec d'autres frameworks), le navigateur va lancer la requête en question et immédiatement passer à la suite, sans attendre le retour de la requête.

Pour programmer en évènementiel avec Javascript et les méthodes AJAX, il faut complètement repenser son approche de la programmation.
En l'occurrence, c'est la fonction de l'option "success" - et elle seule - qui connaitra le retour de la requête et qui pourra le traiter. Ton code est donc à mettre dans cette fonction "success".

Par ailleurs, par mesure de "propreté", si cette fonction est longue tu peux la déporter comme ceci :

function auth_ok(ajax) {
       //  Ici, mettre le code qui traite le retour de la requête
}

function auth(func)
{
	$.ajax({
		type: 'GET',
		url: 'include/class/auth/class.auth.php?func='+func,
		timeout: 3000,
		success: auth_ok,
		error: function() {
			alert('La requête n\'a pas abouti');
		}
	});
}

Tu peux toutefois récupérer la valeur comme tu l'as indiqué en mettant l'option "async: false" à ton objet ajax, mais ça va complètement à l'encontre de la logique de programmation en Javascript.

Hors ligne