Во-первых, onload
выполняется при успешном завершении. Если вы в нем, вы уже можете принять код состояния, отличный от 4xx (почти всегда 200).
Хотя это не твоя настоящая проблема. (В худшем случае это означает, что вы не обрабатываете ошибки должным образом.) Ваша настоящая проблема заключается в том, что код состояния представляет ответ сервера при посещении notexist.php
. Если ваш сервер возвращает код ответа 200 (либо напрямую, либо, возможно, путем возврата на страницу «ошибка», которая является просто обычной веб-страницей), то это то, что увидит ваш XMLHttpRequest, и ошибки будут выглядеть как успехи.
Убедитесь, что из-за ошибок при поиске страницы ваш сервер возвращает код ответа 404.