7
votes

Qu'est-ce que JQuery's équivalent au prototype d'Ajax.Restics.register?

Y a-t-il un équivalent jQuery à ce code prototype?

Ajax.Responders.register({
  onException: function(x,y)
  {
    if(y.message!="Syntax error") new Insertion.After("toperrorbox","<p style='color:red'>"+y.message+"</p>");
  }
});


0 commentaires

3 Réponses :


0
votes

Je ne connais pas le prototype, mais je suis sûr que c'est quelque chose comme ceci: xxx

éditer: Ou vous pouvez essayer avec quelque chose de plus global: xxx


1 commentaires

Le deuxième exemple nécessite un objet JQuery comme base.



3
votes

http://docs.jquerer.com/ajax/ajaxerror#exemples

$('#toperrorbox').ajaxError(function (event, request, settings) {
   $(this).after("<p style='color:red'>"+ request.responseText +"</p>");
}


2 commentaires

Êtes-vous sûr que le responsable est défini sur un message d'erreur sur l'échec? (sur tous les navigateurs?)


Finalement, je vais utiliser ceci: $ (). AjaxError (fonction (e, r) {$ ("# topnav"). Après ("

" + r.staustext + " "); tes réponses gagnent en raison de la brièveté



4
votes

Prototype Ajax.Restics Code> Les auditeurs globaux écoutent tous les événements Ajax. JQuery a effectivement un équivalent. Le global Events Ajax .

La syntaxe est un peu différente, due à la nature de JQuery, mais quelque chose de similaire à cela devrait faire l'astuce: p> xxx pré>

dans ce cas, xmlhttprequest.responseText code> contiendra le corps (le cas échéant) renvoyé du serveur sur la demande échouée. Et ThroftError code> contiendra l'exception réelle, que je crois que vous êtes réellement après. Mais, je vous recommanderais de vérifier si une exception était en effet adoptée avant d'essayer d'imprimer son message, ce que j'ai fait dans mon exemple. S'il a attrapé une exception, cela utilisera ce message, mais sinon, cela utilisera la réponse du serveur. P>

Il convient de noter qu'avec JQuery, tous les événements sont toujours liés à quelque chose. Habituellement, un nœud DOM, mais éventuellement la fenêtre code> ou le document code>. Si vous vouliez faire la même chose, sans liaison à l'élément spécifique pour agir (comme l'exemple ci-dessus), vous pouvez lier l'événement à la fenêtre code> code> et sélectionnez l'élément (s) à travailler sur Dans votre rappel comme ceci: p>

$(window).bind('ajaxError', function (event, XMLHttpRequest, ajaxOptions, thrownError) {
   // thrownError only passed if an error was caught
   // this == dom element listening
   var message = thrownError === undefined? XMLHttpRequest.responseText : thrownError.message;
   $('#toperrorbox').after("<p style='color:red'>"+ message +"</p>");
}


0 commentaires