【问题标题】:Jquery Ajax function and ASP.net web service error trappingJquery Ajax 函数和 ASP.net Web 服务错误捕获
【发布时间】:2009-12-11 18:46:43
【问题描述】:

我使用 $.ajax 函数与常规的 asp.net Web 服务进行交互。我的问题是如何捕获错误。 Web 服务与数据库交互并在遇到任何错误时返回错误,但在此之后,我非常不清楚如何捕获这些错误(以及在 $.ajax 性能期间遇到的其他错误)。

$.ajax 有一个参数 msg 的回调失败。我是否必须在 Web 服务端做一些事情来用数据库中的错误填充那个 msg 变量?

有人可以概述我在代码中需要采取的步骤,以便使用 Jquery + ASP.net Web 服务进行可靠的通信吗?

谢谢!

 var list = [["john.doe", "corp"],["1","2","3","7"],["4","5","6"],["34","88","898"]];
         var jsonText = JSON.stringify({ list: list });

         $.ajax({
             type: "POST",
             url: "http://localhost/TemplateWebService/TemplateWebService/Service.asmx/SaveSampleTemplate",
             data: jsonText,
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             success: function(response) {

             alert("success!");

                 alert(response.d);


             },

             failure: function(msg) {

                 alert("fail");

                 $('#pnlOutput').append('<p><font color="red">Message error ' + msg + ' </font></p>');

             }

         });

    }

【问题讨论】:

  • 回调函数实际上是“错误”而不是“失败”。
  • 谢谢贾斯汀。这也是我刚刚注意到的。我一定是把我最初的例子复制错了。但如果说 Web 服务不可访问,它会显示错误消息。 “失败”是否已弃用?
  • 嗯,我不确定。我从未在文档中看到它...

标签: jquery asmx


【解决方案1】:

我相信只要服务器以“200”状态以外的状态响应,就会调用错误回调函数。因此,如果服务器上抛出异常或网络问题,则回调将运行。

如果您想通过错误回调输出某些内容,则必须将服务器响应设置为“200”以外的内容。

根据您要执行的操作,您可能需要小心处理,因为您正在模糊真正的服务器/网络错误与部分业务逻辑之间的界限。

希望对你有帮助!

编辑:查看“选项”选项卡下的文档here 了解更多信息。

【讨论】:

  • 谢谢我看到了那个页面。然而,我的问题更多是关于如何有效地向用户显示数据库错误。我不会干预服务器响应,所以对我来说这样做的方法是让响应对象返回数据库错误。为了实现这一点,我将在我的 Web 服务中设置返回对象以返回错误而不是结果。这是正确的想法吗?
  • 这听起来像是正确的想法......但我不确定最好的方法。您可以尝试在服务器上捕获异常并抛出一个新的异常(自定义或其他),并为您的用户提供更简洁的消息。
  • 我会抓取 Web 服务中的错误,然后将其包装并将其推送到返回对象中,然后在成功回调时(请记住,这是一个数据库错误,因此不应调用错误回调),我会打开它并展示给用户。
猜你喜欢
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多