【问题标题】:Web services error trapping(Jquery + asp.net web service)Web 服务错误捕获(Jquery + asp.net Web 服务)
【发布时间】:2011-01-09 15:02:19
【问题描述】:

我正在寻找一种可接受的解决方案,用于在以下情况下捕获错误: 我有一个与数据库交互的 asp.net Web 服务。我通过 jquery 的 $ajax 函数与 Web 服务交互。

我想知道公认的错误捕获稳定方法是什么。当从 Web 服务接收数据时,在我的场景中有两种类型的错误:

  • 数据库错误
  • ajax 错误

Ajax 错误可能会被困在 $ajax 函数的错误部分中。我在 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!");
  }
});

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

【问题讨论】:

    标签: javascript jquery json web-services error-handling


    【解决方案1】:

    知道了:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 但此时我如何区分数据库和 ajax 错误?有没有办法在 Web 服务中设置错误消息/错误状态以显示在错误块中?你有一段代码来演示它吗?谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多