一尘不染

失败/错误时,JSON服务应返回什么

json

我在C#(.ashx文件)中编写JSON服务。在成功请求服务后,我返回了一些JSON数据。如果请求失败,要么是由于引发异常(例如,数据库超时),要么是因为请求在某种程度上是错误的(例如,将数据库中不存在的ID用作参数),服务应该如何响应?哪些HTTP状态代码是明智的,是否应该返回任何数据?

我预计该服务将主要使用jQuery.form插件从jQuery调用,jQuery或此插件是否具有处理错误响应的默认方式?

编辑: 我已经决定成功使用jQuery + .ashx + HTTP
[状态代码],我将返回JSON,但在错误时,我将返回一个字符串,因为这似乎是jQuery的错误选项。阿贾克斯期望。


阅读 165

收藏
2020-07-27

共1个答案

一尘不染

您返回的HTTP状态代码应取决于发生的错误的类型。如果数据库中不存在ID,则返回404;否则,返回404。如果用户没有足够的特权进行该Ajax调用,则返回403;否则,返回403。如果数据库在找到记录之前超时,则返回500(服务器错误)。

jQuery自动检测到此类错误代码,并运行您在Ajax调用中定义的回调函数。文档:http
//api.jquery.com/jQuery.ajax/

$.ajax错误回调的简短示例:

$.ajax({
  type: 'POST',
  url: '/some/resource',
  success: function(data, textStatus) {
    // Handle success
  },
  error: function(xhr, textStatus, errorThrown) {
    // Handle error
  }
});
2020-07-27