Одним из возможных решений было бы использование HTTP-кода ответа для оповещения об ошибке, например, 200 OK, все в порядке, и 500 Internal Server Error on error, которую можно просто проверить при достижении состояния 4.
В PHP я считаю, что это делается через заголовок («HTTP / 1.0 200 Ok») перед отправкой любых других данных. Если вы боитесь, что данные будут отправлены по ошибке, прежде чем вы сможете оценить правильный заголовок для установки, вы можете включить буферизацию вывода.
Как вы хотите представить данные, конечно, зависит от вас, вы можете, например, на 500 просто иметь document.getElementById ("myerrorbox"). InnerHTML = xmlHttp.responseText или аналогичный, и визуализировать частичный HTML-документ в вашей php-программе.