我在控制器中有這部分代碼,但是當我做這個動作和IF工作正常,錯誤消息出現在控制檯日誌中。拋出異常,但JSON響應獲取狀態SUCCESS
但它看起來像'成功'具有地位。而且它不應該
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>');
}
});
要報告錯誤,您必須返回400或500範圍內的HTTP響應。在您當前的實施中,您提出了成功回覆的請求。該響應包含一段Json,它正好具有屬性「success」,其值爲「false」,但您的Ajax調用並不知道這表明了錯誤。您可以通過解析響應來在JavaScript中實現,但更好,更純粹的方法是讓PHP返回適當的錯誤響應代碼。請參閱[HTTP狀態代碼](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) – GolezTrol
但是,當我拋出異常時不應該使用CATCH塊嗎? – Ferror
好吧,所以不要拋出異常,我應該重新成功迴應:錯誤 – Ferror