Web服务错误捕获(Jquery + asp.net Web服务)

时间:2010-01-26 17:43:03

标签: jquery web-services json error-handling

我正在寻找在以下场景中捕获错误的可接受解决方案: 我有一个与数据库交互的asp.net Web服务。我通过jquery的$ ajax函数与Web服务进行交互。

我想知道错误捕获的可接受的稳定方法是什么。从Web服务接收数据时,我的方案中存在两种类型的错误:

  • db errors
  • ajax错误

Ajax错误可能陷入$ ajax函数的错误部分。我将数据库错误捕获到Web服务中,到目前为止,我只想出一个如何将它们传递给用户的想法 - 将它们打包到结果数组中。但这个解决方案很尴尬。还有更好的想法吗?

以下是我用于访问asp.net Web服务的代码示例:

$.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!");
    }

});

那么数据库结果应该进入结果数组并手动解压缩吗?有更好的系统吗? 谢谢!

2 个答案:

答案 0 :(得分:5)

得到了它:

$(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  }

答案 1 :(得分:0)

您可以做的是在Web服务的GetBillingEntities方法中抛出异常。捕获异常,记录一些细节,然后重新抛出它。如果您的方法抛出异常,它应该被捕获在“error:”块中。

所以基本上你处理服务中的错误数据,并处理如何在“error:”块中向用户显示错误。