J'ai sur la charge de la page pour définir l'animation de chargement pour tous mes appels Ajax. Cela fonctionne parfaitement, à l'exception des appels de charge (). Pour des charges uniquement, la Beforesend est déclenchée et complète ne s'appelle jamais, ce qui donne une animation montrant qui ne disparaît jamais. P> aucune idée? P> P>
3 Réponses :
Le $. Charger code>
manuel dit: P>
... il est à peu près équivalent à $ .get (URL, données, succès) sauf que c'est une méthode plutôt que la fonction globale et il a une implicite implicite Fonction de rappel forte>. p> blockQuote>
Il semblerait que
$. Charger Code> La fonction de rappel implicite de code> remplace le rappel code> de code> dans votre
$. AjaxSetUp code>. Le
$. AjaxSetUp CODE>
Documentation dit: P>Tous les appels AJAX ultérieurs en utilisant n'importe quel la fonction utilisera les nouveaux paramètres, Sauf non remplacé par l'individu appels, jusqu'à la prochaine invocation de $ .ajaxsetup (). p> blockQuote>
Je suppose que la solution serait de remplacer votre
$. Charger code> appels avec
$ .ajax code>
). Vous pouvez également essayer d'utilisersuccès code> à la place. P>
Ajout de succès Correction du problème, merci (je peux jurer que je l'ai essayé avant) :) p> p>
Et si l'appel Ajax donne une erreur (c'est-à-dire http 401). Le gestionnaire de succès est-il appelé aussi?
Je pense que non, mais complète devrait être appelée.
Selon http://bugs.jquerery.com/ticket/4086#Comment: 4 , la méthode "correcte" serait la suivante:
$(document).ajaxSend(function(event, jqXHR, settings) { $('#general-ajax-load ').fadeIn(); }); $(document).ajaxComplete(function(event, jqXHR, settings) { $('#general-ajax-load ').fadeOut(); });