2009-10-11 7 views
2

J'ai une grosse application JavaScript avec beaucoup d'ajax dedans (script tiers). Maintenant, j'ai besoin d'intercepter tous les événements ajax, c'est-à-dire lorsqu'un message du serveur revient avec le texte ou le message de transport, je veux que ce texte/message fasse des remplacements.Comment intercepter tous les événements jquery ajax?

problème: j'ai essayé avec ceci, mais il ne réagit jamais sur n'importe quel événement d'ajax. Il est de la page d'exemples jquery et cette chose #MSG ressemble à un espace réservé pour quelque chose:

$("#msg").ajaxSuccess(function(evt, request, settings){ 
      alert('ajax event'); 
      $(this).append("<li>Successful Request!</li>"); 
}); 

Répondre

1

Votre syntaxe semble correcte. J'ai triplé la syntaxe .. et ça semble bien. Vous avez mentionné que vous utilisez des appels ajax tiers ... le .ajaxSuccess() ne se déclenchera que si vous utilisez les appels ajax de jQuery ... comme $ .post, $ .get ou $ .ajax.

Si vos appels ajax sont des appels de tiers, vous devrez passer tous vos autres appels ajax à l'aide de méthodes jQuery.

J'espère que cela aide? Ce n'est peut-être pas correct du tout.

+0

Que fait cette chose "#msg" en première ligne? Je n'ai pas à le remplacer par quelque chose? –

+0

#msg fait référence à un contrôle qui a un identifiant de "msg" (sensible à la casse). Le seul avantage à pointer vers #msg est que vous pouvez vous référer à "this" dans l'appel de la fonction. J'avais supposé que vous aviez un objet UL qui contenait des éléments LI, mais si vous avez copié cet appel à partir d'un exemple, vous pouvez très facilement appeler $ ("form"). AjaxSuccess Il n'est pas nécessaire de pointer sur le contrôle que cela va changer, il suffit de pointer comme n'importe quel contrôle. – Evildonald

+0

PS il y a un couple de faute de frappe .. lire entre mon horrible frappe :) – Evildonald

Questions connexes