success manage handling error php javascript jquery ajax error-handling

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 + ''])''); });