我正在用C#(.ashx文件)编写一个JSON服务.在成功请求服务时,我返回一些JSON数据.如果请求失败,或者是因为引发了异常(例如,数据库超时),或者是因为请求在某些方面出错(例如,数据库中不存在的ID作为参数提供),服务应该如何响应?什么HTTP状态码是合理的,我应该返回任何数据吗?

I'm anticipating that service will mainly be called from jQuery using the jQuery.form plugin, does jQuery or this plugin have any default way of handling an error response?

EDIT:我已经决定使用jQuery+.ashx+HTTP[状态代码]如果成功,我将返回JSON,但在出错时,我将返回一个字符串,因为这似乎是jQuery.ajax的错误选项所期望的.

推荐答案

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

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

Short example of a $.ajax error callback:

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

Jquery相关问答推荐

JQuery日期 Select 器未设置从jQuery中 Select 的月份起90天或3个月

使用 shell 脚本判断 json 数组响应是否具有特定用户名和状态的 jq 命令

无法使用 HTML 设置未定义的 jQuery UI 自动完成的属性_renderItem

jQuery 绑定点击 *ANYTHING* 但 *ELEMENT*

在 jQuery UI Datepicker 中禁用future 日期

JavaScript 中的循环计时器

清除并刷新 jQuery Chosen 下拉列表

如何使用 jQuery 清空输入值?

jQuery UI 自动完成宽度未正确设置

基于垂直滚动的jquery添加/删除类?

延期与promise

将字符串true和false转为布尔值

addClass - 可以在同一个 div 上添加多个类吗?

jQuery DataTables:延迟搜索直到输入 3 个字符或单击按钮

带有 jquery.animate() 的 CSS 旋转跨浏览器

.apply jQuery 函数是什么?

如何在 jQuery 中 Select this中的元素?

AngularJS:使用 jQuery 更改时,ng-model 绑定不更新

Twitter Bootstrap 中的树

在 Javascript/jQuery 中,(e) 是什么意思?