La désactivation de certaines jQuery mondiale Ajax des gestionnaires d'événement pour une demande
Supposons que j'ai une certaine mondiale Ajax gestionnaires d'événements définis (ajaxStart, ajaxStop, et ajaxError). En général, je suis très bien avec ça, mais pour une demande, je souhaite désactiver le ajaxError gestionnaire mais toujours exécuter le ajaxStart et ajaxStop les gestionnaires comme d'habitude. Le jQuery ajax fonction documentation mentionne le "global" paramètre peut être défini sur false et transmis à l' $.ajax fonction pour désactiver toutes les mondiaux Ajax gestionnaires d'événements, mais ils ne parlent pas de toute façon, à seulement désactiver certaines gestionnaires.
Je ne peux empêcher la ajaxError gestionnaire en faisant un test sur la "url" propriété de la ajaxSettings objet qui est passé à la ajaxError fonction, mais qui semble un peu maladroit. Est-ce que quelqu'connaissez un moyen pour désactiver la ajaxError fonction de la course, qui serait évident pour quelqu'un qui cherche
à l'endroit où l' $.ajax fonction est appelée?
Je peux fournir un exemple simple, si quelqu'un veut le voir.
- Avez-vous essayé (et je devine sur celui-ci) l'ajout de votre propre
.error
gestionnaire dans le$.ajax()
appel et en mettant ensuitereturn false
à la fin de la fonction pour arrêter le traitement? - Oui, j'ai essayé. Il n'a pas de résoudre le problème. Le mondial de gestionnaire courait toujours.
- Le mondial de gestionnaire (succès,erreur,complet) s'exécute avant que le succès d'erreur//complet gestionnaire si je me souviens bien.
Vous devez vous connecter pour publier un commentaire.
C'est possible et pas si difficile à faire.
Vous avez juste besoin de la configuration de votre gestionnaire d'erreur (
.ajaxError
) pour recevoir quelques-uns des paramètres que jQuery peut fournir à elle:Après cela, vous pouvez ajouter
suppressErrors: true
les paramètres de requête AJAX que vous faites, et si elle échoue, le gestionnaire d'erreur sera de retour sans faire ce qu'il fait normalement.Le voir en action.
if(settings.error !== undefined) { return; };
Alors normal de la requête ajax, il suffit d'erreur: à quelque choseQuand vous regardez cette si la déclaration de l'jquery/ajax source https://github.com/jquery/jquery/blob/master/src/ajax.js#L579-582 , qui est l'un de plusieurs du même genre, il est clair que votre problème ne peut être résolu par un jquery paramètre à lui tout seul.
Ma suggestion serait de:
set global de faux, comme Vaibhav Gupta a dit
votre carte mondiale des gestionnaires locaux dans l'appel ajax et de déclencher l'événement mondial à travers l' $.de l'événement.déclencher la méthode
Exemple:
Vous pouvez définir
$.event.global.ajaxError
àfalse
pour désactiver invoquant l'erreur globale de rappel temporairement. Utiliser leerror
etcomplete
rappels de votre demande spéciale pour définir les indicateurs:Un exemple est disponible sur jsFiddle.
Que présenté, je tiens à ajouter que je préfère encore Jon proposition. Cette technique nécessite de définir l'indicateur à 2 endroits dont vous pourriez oublier l'un et de et de à la mondiaux de gestionnaires désactivé par inadvertance. L'autre raison est que Jon technique devrait être garanti à travailler à travers jQuery versions où la définition de certains indicateurs internes n'est pas fiable.
essayez d'utiliser
global: false
dans votre requête ajax comme:source:: http://docs.jquery.com/Ajax_Events
Recherchez les Événements Mondiaux.