予想されるエラーは、私が予想していた、またはコードで自分自身で育てたサーバーからのものです。たとえば、ユーザーが十分な特権を持たないアクションを実行しようとすると、エラーを説明するメッセージとともにPermissionError
(カスタムException
)を発行します。AJAXで予想されるエラーを処理する方法(ユーザーに公開する方法を含む)
私は、AJAXの状況で予想されるエラーを処理するための良い方法を探していました。唯一の要件は、エラーメッセージをユーザーに表示できるようにすることです。私は、ユーザーを何が起こっているかのループにとどめたいからです。
私の現在のアプローチは、JSONオブジェクトにエラーメッセージをパッケージ化し、クライアントエンド私はわからないよ心の中で別のアプローチを、持っている
var ajaxResponse = $.ajax({
....
});
ajaxResponse.done(function(jsonObj) {
if (jsonObj.success) {
/* no error, do something */
}
else {
/* expected error returned, display jsonObj.error to user */
}
});
ajaxResponse.fail(function(jqXHR, textStatus, errorThrown) {
/* unexpected error returned */
});
に戻ってそれを送信しています。基本的には、JSONオブジェクトに予想されるエラーのメッセージをパッケージ化するのではなく、私のdjangoコードでHttpResponse(content="no sufficient privilege", status=403)
を返します。
ajaxResponse.done(function(response_data) {
/* no error, do something */
});
ajaxResponse.fail(function(jqXHR, textStatus, errorThrown) {
/* both expected and unexpected error would end up here.
* It's an expected error when error code is 403 and
* jqXHR.responseText would give me the error message to
* display to the user.
*/
});
私は、2番目のアプローチがすべてのエラーを1つの場所にグループ化するのが好きです。しかし、私は、httpステータスコードをこのように使うべきではないと感じています。とにかく、どちらが正しい道かを知りたい。もしどちらでもなければ、あなたがすることを分かち合ってください。
「しかし、その後、私はHTTPステータスコードがこの方法を使用すべきではない気がする」 - –
@AnthonyGrist - 私はT.Jと同じ意見を共有しています。クラウダー。ここで彼は[別のSOの投稿](http://stackoverflow.com/a/6701385/338961)で言わなければならなかったものです。 – tamakisquare