PHP レスポンスのリクエスト ステータスコードを 4XX または 5XX に設定します。これにより、error
/fail
コールバックになります。
必ずしもリストの値である必要はありません。たとえば、独自のものを作成できます。
StatusCode: 550
StatusText: "My Custom Error"
私の記憶が正しければ、PHP では次のようになります。
header('HTTP/1.0 550 My Custom Error');
最後に、エラーの詳細をクライアントに送信して、何が問題なのかを通知します。ヘッダーに情報を配置するか、次を使用して例外をシリアル化できますjson_encode()
<?php
try {
if (some_bad_condition) {
throw new Exception('Test error', 123);
}
echo json_encode(array(
'result' => 'vanilla!',
));
} catch (Exception $e) {
echo json_encode(array(
'error' => array(
'msg' => $e->getMessage(),
'code' => $e->getCode(),
),
));
}
?>
クライアント側:
$.ajax({
url: 'page.php',
data: { 'some_bad_condition': true }
}).done(function(data){
console.log('success!', data);
}).fail(function(jqXhr){
var errorObject = $.parseJSON(jqXhr.responseText);
console.log('something went wrong:', errorObject);
//jqXhr.status === 550
//jqXhr.statusText === 'My Custom Error'
});
PHP ファイルで正しい MIME タイプを指定することを忘れないでください。そうすれば、明示的に指定しなくても、jQuery はそれが JSON 応答であることを認識します。
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');