Je souhaite utiliser jQuery ajax pour récupérer des données d'un serveur.
Je veux mettre la définition de la fonction de rappel de succès en dehors du .ajax()
bloc comme suit. Dois-je donc déclarer la variable dataFromServer
comme suit afin de pouvoir utiliser les données renvoyées par le rappel de réussite?
J'ai vu la plupart des gens définir le rappel de succès à l'intérieur du .ajax()
bloc. Le code suivant est-il donc correct si je souhaite définir le rappel de réussite à l'extérieur?
var dataFromServer; //declare the variable first
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData(dataFromServer)
})
}
function handleData(data) {
alert(data);
//do some stuff
}
la source
deferred objects
chose a-t-elle été présentée? Je ne l'ai jamais vu. De plus, cela semble un peu compliqué, car le code qui définit le rappel à utiliser se trouve dans un emplacement différent de l'appel AJAX réel.success:
. Découpler le rappel de l'AJAX est une bonne chose! Voir les notes que je viens d'ajouter à la fin de ma réponse.$.get()
par exemple, il aurait été impossible d'ajouter unerror:
gestionnaire car$.get
ne le prend pas en charge. Cependant, vous pouvez ajouter un.fail
au résultat différé de$.get
.La "nouvelle" façon de faire cela depuis jQuery 1.5 (janvier 2011) est d'utiliser des objets différés au lieu de passer un
success
rappel. Vous devez renvoyer le résultat de$.ajax
, puis utiliser les méthodes.done
,.fail
etc pour ajouter les rappels en dehors de l'$.ajax
appel .Cela dissocie la gestion des rappels de la gestion AJAX, vous permet d'ajouter plusieurs rappels, des rappels d'échec, etc., le tout sans jamais avoir besoin de modifier la
getData()
fonction d' origine . Séparer la fonctionnalité AJAX de l'ensemble des actions à effectuer par la suite est une bonne chose! .Les différés permettent également une synchronisation beaucoup plus facile de plusieurs événements asynchrones, ce que vous ne pouvez pas faire facilement avec
success:
Par exemple, je pourrais ajouter plusieurs rappels, un gestionnaire d'erreurs et attendre qu'un minuteur s'écoule avant de continuer:
D'autres parties de jQuery utilisent également des objets différés - vous pouvez très facilement synchroniser les animations jQuery avec d'autres opérations asynchrones.
la source
success:
parce que les différés fonctionnent tellement mieux.user:6782 deferred
de nombreux autres exemples.alert
bien ... Personnellement , je l' utiliseconsole.log(data)
ou si elle est un tableau:console.table(data)
:)Je ne sais pas pourquoi vous définissez le paramètre en dehors du script. Cela n'est pas nécessaire. Votre fonction de rappel sera appelée avec les données de retour comme paramètre automatiquement. Il est très possible de définir votre callback en dehors du
sucess:
iela fonction handleData sera appelée et le paramètre lui sera transmis par la fonction ajax.
la source
Essayez de réécrire votre gestionnaire de succès pour:
La propriété success de la méthode ajax ne nécessite qu'une référence à une fonction.
Dans votre fonction handleData, vous pouvez prendre jusqu'à 3 paramètres:
la source
Je souhaiterai écrire :
la source
dataFromServer
pour que la première ligne puisse être supprimée.après quelques heures, jouez avec et devenez presque terne. le miracle m'est venu, ça marche.
la source
success : callback
jquery déclenchera votre fonction appeléecallback
avec ledata
paramètre en elle.Vous n'avez pas besoin de déclarer la variable. La fonction de succès Ajax prend automatiquement jusqu'à 3 paramètres:
Function( Object data, String textStatus, jqXHR jqXHR )
la source
Dans votre composant ie code JS angulaire:
la source