Pregunta de AJAX: el servidor no devuelve el código de estado adecuado en caso de error

Mientras diseñaba un mecanismo de manejo de errores para el script AJAX en mi sitio web, descubrí que el único código de estado que devolvía el servidor en caso de error era 0 (o "indefinido"). Incluso cuando creé intencionalmente un error 404 al solicitar un archivo inexistente, el único código de error que fue devuelto por el servidor fue 0. Creo que este problema es causado por el servidor de mi servidor web (www.000webhost.com) cuando redirige los errores 404 a http://error404.000webhost.com/? sin embargo, necesito encontrar una manera de obtener un código de error adecuado de la respuesta del servidor para enviar comentarios al usuario sobre lo que salió mal ... Entonces, mi pregunta es: ¿cómo puedo hacer que el servidor devuelva el código de estado adecuado? o si ese no es el problema: ¿qué pasa con mi código?

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);
}

preguntado el 27 de agosto de 11 a las 23:08

¿Tiene una página en vivo a la que pueda dirigirnos? Además, está ejecutando este script localmente desde el sistema de archivos, ¿verdad? Porque ese es el único caso que conozco que devolvería un código de 0 en lugar de un 200. -

Si su anfitrión tiene una redirección de errores, entonces debe preguntarle al respecto. A menos que controle el servidor, no puede evitar que tomen una respuesta 4xx y la conviertan en una redirección 302. -

sí, tengo una página en vivo slang.net78.net/query.html (todavía está en construcción, por lo que se ve un poco feo) también el script apunta a un archivo inexistente para causar un error. Y no, no está alojado localmente. Además, ¿conoce alguna forma de evitar que 000webhost tome una respuesta 4xx y la convierta en una redirección 302 utilizando el archivo .htaccess (al que tengo acceso)? -

1 Respuestas

Puede haber diferentes razones por las que NO obtiene los códigos de estado http adecuados como respuesta.

  1. Consulte con su proveedor de alojamiento si está manejando o ha personalizado el servidor web para esto. Puedes consultarlo en su panel de control o preguntar en su mesa de ayuda.

  2. Su servidor está redirigiendo en caso de 404, lo que puede no permitir que el navegador lo rastree como 404, sino como 302 o 303 (redirección). Pocas empresas de hosting hacen eso.

También me di cuenta de que ya estás usando jQuery, así que ¿por qué no usarlo también para tus llamadas ajax? Funciona bien. Puedes comprobarlo en http://api.jquery.com/category/ajax/

Respondido 31 ago 11, 23:08

Todavía no he recibido una respuesta de mi empresa de alojamiento, pero parece que eso es lo que está sucediendo. Además, gracias por el consejo sobre el uso de jQuery para llamadas Ajax. - slang

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.