19

新しいモデル、更新モデル、または削除モデルでサーバーエラー応答を管理するための最良の方法を知りたいです。この時点で、サーバーはhttpステータスコード#400を返します。ただし、Backboneのデフォルトのエラーハンドラーはエラーを表示していません。

これらのエラーを表示するにはどうすればよいですか?

サーバー側の検証が失敗したときにサーバーがhttpエラーヘッダーを返すことは問題ありませんか?(たぶん、status ='ERROR'メッセージで成功応答を返す方が良いでしょう)

4

1 に答える 1

20

2XX以外のhttpステータスを返す場合は、ジョブはすでに半分完了しています。:-)基本的に、あなたができることは、あなたが望むものを応答として送り返すことです。

たとえば、次のようなものを送り返すことができます。

// Send back http status 500
echo 'Could not save, server error';

500ステータスは、バックボーンエラーコールバックをトリガーし、応答はjqXHRオブジェクトです。上記の例では、エラーコールバックで次のようなことを行うことでメッセージを取得できます。

model.save({},{
    error: function(model, response) {
        console.log(response.responseText);
    }
});

これは、サーバー側で発生したエラーに関するデータ/メッセージを取得するための最も簡単な方法です。もちろん、サーバーから返されるより高度なデータを作成することもできます。

// I'm using SLIM RESTful framework...
$dataOut = array('error'=>'Validation type', 'message'=>'Did not validate');
$response->body(json_encode($dataOut));

同様に、次のようにその応答にアクセスできます。

model.save({},{
    error: function(model, response) {
        var responseObj = $.parseJSON(response.responseText);
        console.log('Type: ' + responseObj.error + ' Message: ' + responseObj.message);
    }
});

またはそれらの線に沿った何か。

エラーコールバックに渡される応答はjqXHRオブジェクトであるため、使用する可能性のあるすべてのプロパティに完全にアクセスできます。

E.g.
response.readyState
response.status
response.statusText // etc.

バックボーンは、サーバーから返されたhttpステータスのみを実行する必要があります。

于 2012-08-27T23:30:43.713 に答える