При разработке механизма обработки ошибок для скрипта AJAX на моем веб-сайте я обнаружил, что единственный код состояния, который был возвращен сервером в случае ошибки, был 0 (или «неопределенный»). Даже когда я преднамеренно создал ошибку 404, запросив несуществующий файл, единственным кодом ошибки, который был возвращен сервером, было 0. Я считаю, что эта проблема вызвана сервером моего веб-хоста (www.000webhost.com), когда он перенаправляет 404 ошибки на http://error404.000webhost.com/?, однако мне нужно найти способ получить правильный код ошибки из ответа сервера, чтобы предоставить обратную связь пользователю о том, что пошло не так ... Итак, мой вопрос: как сделать так, чтобы сервер возвращал правильный код состояния, или, если проблема не в этом: что не так с моим кодом?
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
alert(xmlhttp.status); //this alert box shows 200 normally, but during a error only shows 0
if (xmlhttp.status==200) { // 200 = OK, process result
//stuff for processing the result (when there is no error)
}
else { // error handling (creates a jgrowl notification showing the status code)
$('#jGrowl-container').jGrowl('AJAX Error Code: ' + xmlhttp.status', {sticky: true, theme: 'error'});
}
}
}
xmlhttp.open("POST", "process.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("&s="+ScoutID + "&pw="+pword + "&rt="+RequestType + RequestText);
}