jQuery / Ajax $.ajax() de la transmission de Paramètres de Rappel - un Bon Modèle à Utiliser?
Code JavaScript je commence avec:
function doSomething(url) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: rssToTarget
});
}
Modèle que je voudrais utiliser:
//where elem is the target that should receive new items via DOM (appendChild)
function doSomething(url, elem) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: rssToTarget(elem)
});
}
Je ne pense pas que je peux obtenir le rappel de travailler de cette façon, non? Quel est le bon modèle? Je ne veux pas utiliser de variables globales nécessairement pour retenir temporairement les elem
ou elem nom.
- stackoverflow.com/questions/2602981/... utilisation invokedata
- Pour une référence future: Vous avez besoin de stocker la fonction de rappel (
rssToTarget
) au sein de lasuccess
propriété de l'objet littéral vous êtes de passage à$.ajax()
, donc jQuery peut appeler cette fonction à la fois de la requête AJAX est terminé. En ajoutant(elem)
à la fin du nom de la fonction, vous êtes en tort, en invoquantrssToTarget
et stocker sa valeur de retour danssuccess
. En JS, en ajoutant entre parenthèses à la fin d'un nom de fonction va l'appeler.
Vous devez vous connecter pour publier un commentaire.
Comme ça...
Réponse à votre commentaire: L'utilisation de fonctions anonymes affecter les performances?
$.ajax
appel dans une boucle, cette approche permettra de créer de nouvelles fonction (function(xml) { ... }
) pour chaque boucle, de consommer plus de mémoire.Le modèle que vous souhaitez utiliser pourrait fonctionner si vous créez un fermeture à l'intérieur de votre rssToTarget fonction:
Quand
rssToTarget(elem)
est exécutée, l'élément paramètre est stocké dans le fermeture, et la fonction de rappel est retourné, en attente d'être exécuté.$.ajax
appel en boucle, je n'ai pas à créer de nouvelle fonction pour chaque boucle. Bonne approche!