#1 Le 13/03/2013, à 10:33
- Morgiver
[javascript]Récupération de données
Salut
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é
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.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne