2011-09-22 6 views
1

Je me demande s'il existe un script ou quelque chose là-bas qui signalera les erreurs javascript/PrototypeJS qui se produisent dans les appels Ajax. Remplir du code avec console.log et/ou des alertes peut prendre du temps. Ce serait génial s'il y avait quelque chose comme un plugin de navigateur qui le ferait.Ajax rapport d'erreur avec PrototypeJS

Quelqu'un at-il des outils ou des astuces?

Répondre

2

Firefox a Firebug.
Chrome a Developer Tools (déjà intégré).
Internet Explorer a Developer Toolbar (déjà intégré).


Pour attraper les erreurs dans le script que vous pouvez utiliser Ajax.Responders,

Ajax.Responders.register({ 
    onException: function(request, exception) { 
    if (window.console) console.log(exception); 
    } 
}); 
+0

Merci, j'utilise les 3 outils en fait, mais je ne connaissais pas les Ajax.Responders. – fanfavorite

1

Vous voulez dire, les erreurs http? Certaines erreurs http sont enregistrées dans firebug, comme 404 ou 500.

Vous pouvez étendre Ajax.Request et lui faire signaler tout état de réponse http souhaité sans avoir à répéter le code.

Ajax.MyRequest = Class.create(Ajax.Request, { 
    initialize: function($super, url, options) { 
     function debuggerHandler(response) { 
      if(console && console.error) { 
       console.error("ERROR: " + response.responseText); 
      } 
     } 

     var debuggers = ["onFailure"]; //add any custom http status code 

     options = Object.clone(options) || {}; 
     var handler; 
     var old; 
     for(var d in debuggers) { 
      handler = debuggers[d]; 
      if(options[d]) { 
       old = options[d]; 
       handler = function(response) { 
        old(response); 
        debuggers[d](response); 
       } 
      } 
      options[d] = handler; 
     } 

     $super(url, options); 
    } 
}); 

Ensuite, au lieu d'appeler Ajax.Request, vous appelez Ajax.MyRequest et chaque appel ajax traverserez les gestionnaires de débogage et par tout gestionnaire que vous voulez traiter l'erreur individuelle. Comme:

new Ajax.MyRequest("/thisresourcedoesnotexist"); 

jetteront 404 et connectez-vous à console.error. Lance un 404, exécute le gestionnaire personnalisé et enregistre dans console.error.

Il existe plusieurs façons d'améliorer cette approche. Ceci est juste l'idée générale.

+0

Merci, on dirait que ça marcherait, mais la méthode plus facile semble utiliser des prototypes construits en fonction. – fanfavorite

Questions connexes