J'ai cette partie de code dans le contrôleur, mais quand je fais cette action et SI fonctionne très bien et le message d'erreur apparaît dans le journal de la console.Throw exception, mais réponse json obtenir le statut SUCCESS
Mais il semble que 'succès' a un statut vrai. Et il ne devrait pas
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>');
}
});
Pour signaler une erreur, vous devez renvoyer une réponse HTTP dans la plage 400 ou 500. Dans votre implémentation actuelle, vous avez fait une demande avec une réponse réussie. Cette réponse contient un morceau de Json qui arrive à avoir une propriété 'succès' avec la valeur' false', mais votre appel Ajax ne sait pas que cela indique une erreur. Vous pourriez implémenter cela en JavaScript en analysant la réponse, mais le mieux et le plus «pur» serait de faire en sorte que PHP renvoie un code de réponse d'erreur correct. Voir [Codes d'état HTTP] (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) – GolezTrol
Mais ne devrait pas bloquer le travail quand je jette une exception? – Ferror
Ok, donc au lieu de lancer une exception je devrais rétablir la réponse avec succès: false – Ferror