このコードはControllerにありますが、このアクションを実行するとIFがうまく動作し、エラーメッセージがコンソールログに表示されます。例外をスローしますが、jsonレスポンスはステータスを取得します。SUCCESS
しかし、「成功」のステータスはtrueのようです。あなたが常にある(200
応答を送っているので、それはない
Try {
if ($last['date']) {
if ($last['date']->format('d-m-Y') == $par['date']) {
throw new \Exception('error', 500);
}
}
return new JsonResponse([
'success' => true,
'data' => $content,
'message' => 'success'
]);
} catch (\Exception $exception) {
return new JsonResponse([
'success' => false,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]);
}
jQueryの
$.ajax({
type: "POST",
url: "/app/url",
data: TableData,
dataType: "json",
success: function(response){
console.log(response.message);
$('#message').html('<p class="alert alert-success">' + response.message + '</p>');
},
error: function (response) {
console.log(response.message);
$('#message').html('<p class="alert alert-danger">' + response.message + '</p>');
}
});
エラーを報告するには、HTTP応答を400または500の範囲で返す必要があります。あなたの現在の実装では、成功した応答でリクエストしました。その応答にはJsonの一部が含まれています.Jsonには 'false'という値を持つ' success'というプロパティがありますが、Ajax呼び出しはエラーを示すことを知らない。レスポンスを解析することでJavaScriptで実装することができますが、より純粋な方法は、PHPが適切なエラー応答コードを返すようにすることです。 [HTTPステータスコード](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)を参照してください。 – GolezTrol
例外をスローするとCATCHブロックは機能しませんか? – Ferror
だから、例外をスローするのではなく、私は成功の応答を返すべきです:false – Ferror