Puede estar fuera de curso, pero me preguntaba si es posible usar la funcionalidad JQuery prefilter y analizar los datos de respuesta en un Ajax Success y reenviar condicionalmente al controlador de eventos error
en mis llamadas ajax
en función de la existencia de ciertos elementos en mi JSON devuelto (mensajes de error).Uso del prefiltro AJAX de JQuery para inspeccionar los datos de respuesta y reenviar condicionalmente al manejador de eventos 'Error'
Sería bueno si esto se configurara globalmente para cualquier función ajax en la página.
Quizás esta no sea la mejor manera de hacerlo; si alguien tiene una idea alternativa, ¡por favor hágamelo saber!
El prefiltro:
//only run prefilter on ajax calls expecting JSON back in response, would this
//be the right way to do this?
$.ajaxPrefilter("json", function(options, originalOptions, jqXHR) {
jqXHR.success(function(data, textStatus, jXHR) {
if(hasErrors(data)) {
//forward to error event handler?
}
});
});
Ajax llamada:
$.ajax({
type: "POST",
data: {
theData: "someData"
},
url: theUrl,
dataType: 'json',
cache: false,
success: function (data, textStatus, jqXHR) {
//do stuff on success
}
error: function (jqXHR, textStatus, errorThrown) {
//I want to do this stuff if data contains errors from server
}
});
Muchas gracias!
Estaba usando el controlador personalizado después de cada devolución de llamada exitosa. Ahora vi $ .ajaxPrefilter en la API de jQuery y vi su respuesta. Me hiciste ganar tiempo. Gracias. – jsonx
¡Esto es perfecto! Muchas gracias! – icats
¿Cómo se 1. detiene todas las devoluciones de llamada '.done', y 2. ejecuta devoluciones de llamada' .fail', en el condicional 'hasErrors (data)'? Intenté 'jqXHR.reject()' pero terminé 'jqXHR.reject no es una función'. ¿Qué escribes exactamente en la sección condicional? – kenn