php - manage - ¿Cómo obtener el texto de respuesta de error jQuery $.ajax?
jquery ajax manage error (10)
Como finalmente lo sugirió esta otra respuesta y sus comentarios en esta página:
error: function(xhr, status, error) {
var err = JSON.parse(xhr.responseText);
alert(err.Message);
}
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 Ido a la playa )
Lo único que dice jQuery 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?
El mejor enfoque simple:
error: function (xhr) {
var err = JSON.parse(xhr.responseText);
alert(err.message);
}
Esto es lo que funcionó para mí
function showErrorMessage(xhr, status, error) {
if (xhr.responseText != "") {
var jsonResponseText = $.parseJSON(xhr.responseText);
var jsonResponseStatus = '''';
var message = '''';
$.each(jsonResponseText, function(name, val) {
if (name == "ResponseStatus") {
jsonResponseStatus = $.parseJSON(JSON.stringify(val));
$.each(jsonResponseStatus, function(name2, val2) {
if (name2 == "Message") {
message = val2;
}
});
}
});
alert(message);
}
}
Esto le permitirá ver toda la respuesta no solo el valor "responseText"
error: function(xhr, status, error) {
var acc = []
$.each(xhr, function(index, value) {
acc.push(index + '': '' + value);
});
alert(JSON.stringify(acc));
}
Mire la propiedad responseText
del parámetro de solicitud.
Para mí, esto simplemente funciona:
error: function(xhr, status, error) {
alert(xhr.responseText);
}
Si desea obtener un error de sintaxis con el número de línea, use esto
error: function(xhr, status, error) {
alert(error);
}
Si no tiene un error de red, y quiere que aparezca un error desde el servidor, por ejemplo, privilegios insuficientes, envíe su respuesta al servidor con un 200 y un mensaje de error. Luego, en su controlador de éxito, compruebe data.status == ''error''
Tratar:
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
usted puede intentarlo también:
$(document).ajaxError(
function (event, jqXHR, ajaxSettings, thrownError) {
alert(''[event:'' + event + ''], [jqXHR:'' + jqXHR + ''], [ajaxSettings:'' + ajaxSettings + ''], [thrownError:'' + thrownError + ''])'');
});