这个
success
和
error
jQuery AJAX调用中的函数只是检查请求的HTTP状态代码当php产生错误时,它不会更改状态代码,因此jquery触发
成功
功能。如果要使用jquery错误,则必须更改状态代码。你可以通过抓住
Error
(php>=7):
try {
$data = test();
}
catch (\Error $e) {
http_response_code(500);
echo $e->getMessage();
}
或者你可以保持状态码为
200
(默认)并用json发送您的响应,包括您喜欢的success和error属性,以及您可能希望随请求返回的任何其他内容。
header('Content-type: application/json');
$response['success'] = true;
$response['error'] = null;
try {
$data = test();
}
catch (\Error $e) {
$response['success'] = false;
$response['error'] = $e->getMessage();
}
echo json_encode($response);
并确保移除
dataType
属性使jquery自动确定类型头。
如果你的程序意外地抛出错误,这可能意味着你做错了什么。如果你希望它抛出错误,你需要抓住它们。这要么意味着用try/catch块包装,要么是
set_exception_handler()
我是说,
set_error_handler()
和
register_shutdown_function()
在全球范围内实现这一目标。