Mediante el uso de la función jQuery Ajax, que puede hacer algo como:Cómo desencadenar la devolución de llamada de error jquery.ajax() en función de la respuesta del servidor, no HTTP 500?
$.ajax({
url: url,
type: 'GET',
async: true,
dataType: 'json',
data: data,
success: function(data) {
//Handle server response here
},
error: function(xhr, status, error){
//Handle failure here
}
});
Tengo dos preguntas que hacer sobre la base de código anterior:
¿Cuándo el jquery.ajax()
error
devolución de llamada será ¿¿llamado??¿Qué pasa si el servidor me responde un objeto json con el mensaje de cadena "Hay un error". Lo que significa que la solicitud aún se envía correctamente, pero recibí la respuesta del servidor
{message: "There is an error"}
.
Creo que no importa qué cadena de valor del servidor se responsed, si el cliente tiene la respuesta del servidor, se activará la jquery.ajax()success
de devolución de llamada de todos modos.
me gustaría preguntar si servidor devuelve específicamente para mí un objeto JSON con valor de cadena como {message: 'There is an error'}
, podría servidor de hacer algo para que esta respuesta podría ser manejada de jquery.ajax()error
de devolución de llamada en lugar de success
devolución de llamada ?
¿Por qué definir handleError en una ubicación separada? ¿Por qué no definirlo en línea así: 'error: handleError = function (xhr, status) {// manejar la respuesta del servidor aquí}' – dallin
@dallin porque le permite no duplicar el código. El servidor puede responder con el código 200 que desencadena la devolución de llamada "exitosa". O bien, un código incorrecto como 400, 404 o 500 activaría la devolución de llamada de "error". En ambos casos, es probable que desee manejar el error de forma centralizada. –
@MichaelButler Creo que podría malinterpretar lo que estaba sugiriendo. Creo que puede definir una función llamada handleError directamente en la propiedad de error (error: handleError = function (xhr, status)). Esto le permite invocar manualmente la función y manejar el error en una ubicación centralizada. Mantendría el manejo del error directamente en la llamada ajax, centralizando las cosas aún más. Aquí hay un jsfiddle con un ejemplo simplificado: http://jsfiddle.net/dhq01bLv/ – dallin