2010-01-26 10 views
2

Je suis à la recherche d'une solution acceptée pour piéger les erreurs dans le scénario suivant: J'ai un service web asp.net qui interagit avec la base de données. J'interagis avec le service web grâce à la fonction $ ajax de jquery.Piégeage des erreurs des services Web (service web Jquery + asp.net)

Je voudrais savoir quelle est la méthode stable acceptée pour le piégeage d'erreurs. Lorsque les données sont reçues du service Web, il existe deux types d'erreurs dans mon scénario:

  • erreurs db
  • erreurs ajax

erreurs Ajax peuvent piégés à l'intérieur partie d'erreur de la fonction ajax $ . Je piège les erreurs de base de données à l'intérieur du service Web et jusqu'à présent, je ne pouvais trouver qu'une idée pour les transmettre à l'utilisateur - les empaqueter dans le tableau des résultats. Mais cette solution est maladroite. Y a-t-il de meilleures idées?

Voici l'exemple de code que j'utiliser pour accéder à un service Web asp.net:

$.ajax({ 
    type: "POST", 

    url: "http://localhost/WebServices/Service.asmx/GetBillingEntities", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(response) { 
     var results = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; 

     DisplayResults(); 


    }, 

    error: function(xhr, status, error) { 
     // Display a generic error for now. 
     alert("AJAX Error!"); 
    } 

}); 

Donc, si les résultats de la base de données aller à un tableau de résultats et il décompressé manuellement? Y a-t-il un meilleur système? Merci!

Répondre

0

Ce que vous pouvez faire est de jeter une exception dans votre méthode GetBillingEntities de votre webservice. Attrapez l'exception, consignez quelques détails, puis relancez-la. Si votre méthode déclenche une exception, elle doit être interceptée dans le bloc "error:". Donc, en gros, vous gérez les données d'erreur dans votre service et gérez comment afficher une erreur à l'utilisateur dans votre bloc "error:".

+0

mais comment puis-je distinguer entre la base de données et les erreurs ajax à ce point? Est-il possible de définir un message d'erreur/un statut d'erreur dans le service Web pour apparaître dans le bloc d'erreur? avez-vous un morceau de code pour le démontrer? Merci! – sarsnake

5

got it:

$(document).ready(function() { 
02  $.ajax({ 
03   type: "GET", 
04   url: "AJAX/DivideByZero", 
05   dataType: "json", 
06   success: function(data) { 
07    if (data) { 
08     alert("Success!!!"); 
09    } 
10   }, error: function(xhr, status, error) { 
11    DisplayError(xhr); 
12   } 
13  }); 
14 }); 
15 
16 function DisplayError(xhr) { 
17  var msg = JSON.parse(xhr.responseText); 
18  alert(msg.Message); 
19 }