8
votes

Fonctions de rappel JavaScript avec Ajax

J'écris une fonction générique qui sera réutilisée dans plusieurs endroits de mon script.

La fonction utilise AJAX (à l'aide de la bibliothèque de jQuery), donc je souhaite passer en quelque sorte une fonction (ou des lignes de code) dans cette fonction exécuter quand AJAX est terminé. Je crois que cela doit être une fonction de rappel, mais après avoir lu quelques réponses de rappel, je suis toujours un peu confus sur la manière dont je voudrais mettre en œuvre dans mon cas.

Ma fonction actuelle est la suivante: xxx

avec cette fonction, je veux pouvoir faire quelque chose de la même manière que d'autres fonctions jQuery fonctionnent, c'est-à-dire; xxx


1 commentaires

Je suppose que cela n'est pas possible (ou du moins, très difficile) de cette façon. Vous devez échanger des fonctions.


3 Réponses :


9
votes

Il suffit de donner getNewenumber code> un autre paramètre pour la fonction, puis utilisez-le comme rappel.

   // receive a function -----------------v
function getNewENumber( parentENumber, cb_func ){

    $.ajax({
           type: "POST",
           url: "get_new_e_number.php",
           data: {project_number: projectNumber, parent_number: parentENumber},

             // ------v-------use it as the callback function
           success: cb_func,
            error: function(request,error) {
                alert('An error occurred attempting to get new e-number');
                // console.log(request, error);
            }
    });
}

var parentENumber = E1-3;

getNewENumber(parentENumber, function( returnValue ){
    alert( returnValue );
});


1 commentaires

Parfait. Je nouveau ce serait quelque chose de simple. Il est toujours plus facile d'apprendre quand il est mis dans votre propre contexte. Merci



3
votes

@Patrick DW's anwser est correct. Mais si vous souhaitez continuer à appeler la console.log code> (ou d'autres actions) toujours, quelle que soit la fonction de code de l'appelant, vous pouvez ajouter le rappel (votre nouveau paramètre) à l'intérieur de la fonction de réussite Vous avez déjà:

var parentENumber = E1-3;

getNewENumber(parentENumber, function(val /* <--new param is here*/){
    alert(val);
});


1 commentaires

Oui, quand je la mettais dans mon code, je me suis demandé comment le faire si j'avais voulu avoir d'autres actions de succès. Merci



0
votes

Ce serait mieux fait avec JQuery's Objets différés . Avoir votre appel AJAX retour l'objet jQxhr . xxx

si vous souhaitez conserver le rappel d'erreur dans dans Cette fonction vous pouvez enregistrer là-bas à la place: xxx


0 commentaires