Estoy enviando una respuesta de error a mi jQuery. Sin embargo, no puedo obtener el texto de respuesta (en el ejemplo a continuación, esto sería Gone to the beach )
Lo único que jQuery dice es 'error'.
Vea este ejemplo para más detalles:
php
<?
header('HTTP/1.1 500 Internal Server Error');
print "Gone to the beach"
?>
jQuery
$.ajax({
type: "post",
data: {id: 0},
cache: false,
url: "doIt.php",
dataType: "text",
error: function (request, error) {
console.log(arguments);
alert(" Can't do because: " + error);
},
success: function () {
alert(" Done ! ");
}
});
Ahora mi resultado es:
Iniciar sesión:
[XMLHttpRequest readyState=4 status=500, "error", undefined]
alerta:
No se puede hacer porque: error
¿Algunas ideas?
php
javascript
jquery
ajax
error-handling
jantimon
fuente
fuente
header
función maneja esto?$.ajax()
llama a la función de error que se le pasa.Respuestas:
Tratar:
fuente
eval
es EVIL ... stackoverflow.com/questions/646597/…eval
aquí no tiene mucho sentido. Si desea analizar una respuesta JSON, useJSON.parse
. En el caso del OP, la respuesta ni siquiera es JSON o JavaScript, poreval
lo que solo va a causar un SyntaxError.xhr
no está definidoPara mí, esto simplemente funciona:
fuente
Mire la
responseText
propiedad del parámetro de solicitud.fuente
Como finalmente sugirió esta otra respuesta y sus comentarios en esta página:
fuente
Esto es lo que funcionó para mí.
fuente
Esto le permitirá ver la respuesta completa, no solo el valor "responseText"
fuente
puedes probarlo también:
fuente
Si desea obtener un error de sintaxis con el número de línea, use esto
fuente
El mejor enfoque simple:
fuente
Usé esto, y funcionó perfectamente.
fuente
Si no tiene un error de red y desea mostrar un error desde el servidor, por ejemplo, privilegios insuficientes, responda al servidor con un 200 y un mensaje de error. Luego, en su controlador de éxito, verifique data.status == 'error'
fuente
fail
método en lugar deldone
método. Todas las solicitudes devuelven un objeto que contiene un objeto de 'estado' con código y mensaje.