我有点卡住了,我有这个PHP代码在这里,这是在我的文件API.php:
try {
$test = "testt";
if ($test == "test") {
echo json_encode('success');
}
else
{
throw new Exception('Condition wrong');
}
} catch (Exception $e) {
echo json_encode($e->getMessage());
}
字符串
我通过jQuery Ajax调用api.php,如下所示:
var data = $('#form').serialize();
$.ajax({url: "api.php", dataType: "json", data: data, type: "POST",
success: function(result){
console.log(result);
},
error: function (textStatus, errorThrown) {
console.log(errorThrown);
console.log(textStatus);
}});
型
我遇到的问题是:error:function(textStatus,errorThrown)没有被调用。我想在我的catch上抛出另一个异常,而不是像这样的json_encode:throw new Exception($e->getMessage());
而不是echo json_encode($e->getMessage());
抛出两个具有相同消息的异常对我来说看起来很奇怪。目标是,如果有一个异常抛出,捕获并在我的异常错误调用中打印它,我是否遗漏了什么?
1条答案
按热度按时间e4eetjau1#
你的error函数永远不会被调用的原因是,来自请求的
http response status code
仍然是200 (OK)
(因为异常已经被捕获)。显式地设置http_response_code
:字符串
在400到599之间的任何值都应该使错误函数被调用。参见HTTP response status codes。