PHP脚本的错误没有由$ .ajax处理

Kir*_*ill 1 php ajax jquery timeout

我有这些代码:

<script>
$.ajaxSetup({
 timeout:3000,
 success: function(){alert('True!!!');},
 error:function (){
                    alert('false');
                }
});
$.ajax({
 url:'test.php',
});
</script>
Run Code Online (Sandbox Code Playgroud)

我的'test.php'是:

<?
sleep(8);
$124415;
?>
Run Code Online (Sandbox Code Playgroud)

因此它有解析器错误,但ajax立即返回"True",但如果第二行有注释,则等待3秒.并返回"false".任何想法?我有更改代码test.php:

<? 
function shutdown() {
    header("HTTP/1.0 500 Internal Server Error");
ob_flush();
}
ob_start();
register_shutdown_function('shutdown');
spl_autoload_register('foo');// Fatal Error => Ajax false
//$112123123;//if turn on will be Parse Error => Ajax true
?>
Run Code Online (Sandbox Code Playgroud)

所以现在ajax警告我有关致命错误,但Parser Error没有捕获.有人知道这个问题的好方法吗?

Pek*_*ica 6

按设计工作.

如果出现解析器错误,PHP脚本将失败并立即终止.然而,在ajax端,这仍然是成功的,因为PHP 200 OK无论如何都会发送一个头.

(PHP会发送一个500致命错误头只有error_reportingdisplay_errors关闭.)

如果没有解析器错误,脚本将休眠8秒,达到3秒超时,从而导致Ajax错误.