Salut,

J'ai une fonction javascript qui fait une requete Ajax pour récupérer des données dans la BDD. Dans le success, je voudrais faire un "return" de ce qu'a récupéré la requete ajax. Seulement le return ne fonction et je me retrouve avec un UNDIFINED ... J'ai fais mes petites recherches et apparement il faut utiliser un callback, seulement j'y pige rien ... Quelqu'un peut m'aider ???

<u>Voici la fonction en question :</u>

function afficherErreur(variableMessage){
    var html = '<div class="msg-Erreur">'+ traduireVariable(variableMessage) +'</div>';
    $("#frm-Contact").before(html);
}

<u>Et la fonction de traduction (site multi-langues, les traductions sont enregistrées dans MySQL) :</u>

function traduireVariable(nomVariable){
    $.ajax({
        type: "POST",
        dataType: "json",
        data: "variable="+nomVariable,
        async: false,
        url: 'rpc/recupTraduction.php',
        success: function(data) {
        return data.reponse;
        }
    });
}

Pour info, la requête sur le fichier 'rpc/recupTraduction.php' renvoi bien ce qu'il faut ;-)

2 réponses


matthieuprieur
Auteur
Réponse acceptée

Mais la requête ajax est bien synchrone ... (async: false) ;-)
En faite vu que je l'ai mise en synchrone, j'ai fais ça : (c'est pas top mais ça marche)

function traduireVariable(nomVariable){
    var retour;
    $.ajax({
        type: "POST",
        dataType: "json",
        data: "variable="+nomVariable,
        async: false,
        url: 'rpc/recupTraduction.php',
        success: function(data) {
        retour = data.reponse;
        }
    });
    return retour;
}

Et vu que la requete est synchrone ça marche ...

Le return se fera pour function(data) pas pour traduireVariable qui lui n'a pas de return.
Il faut que tu pense ton système différemment parceque tu ne pourra pas utiliser le retour de l'ajax vu que c'est asynchrone.