1. ホーム
  2. jquery

JSONサービスが失敗/エラー時に返すべきもの

2023-07-26 02:38:57

質問

私はC#でJSONサービスを書いています(.ashxファイル)。サービスへのリクエストに成功すると、いくつかの JSON データを返します。例外がスローされた(例:データベースのタイムアウト)、またはリクエストが何らかの方法で間違っていた(例:データベースに存在しないIDが引数として与えられた)ために、リクエストが失敗した場合、サービスはどのように応答すべきでしょうか?どのようなHTTPステータスコードが賢明でしょうか、そして、もしあれば、どんなデータでも返すべきでしょうか?

私は、サービスが主にjQuery.formプラグインを使用してjQueryから呼び出されることを期待していますが、jQueryまたはこのプラグインは、エラー応答を処理するためのデフォルトの方法を持っていますか?

EDITです。 jQuery + .ashx + HTTP [ステータスコード] 成功時にはJSONを返しますが、エラー時には文字列を返すことにしました。jQuery.ajaxのエラーオプションが期待するのはこれのようです。

どのように解決するのですか?

返されるHTTPステータスコードは、発生したエラーの種類に依存する必要があります。ID がデータベースに存在しない場合は 404 を返し、ユーザーがその Ajax 呼び出しを行うのに十分な権限を持っていない場合は 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
  }
});