Jquery ajax error de callback

Necesito algunas sugerencias aquí o quizás algunas explicaciones. Tengo una llamada jquery ajax,

$.ajax({ type: "GET", url: base_url+'/ajax/fetch/counts/', dataType: 'json', data: {}, error: function(xhr, error){ console.debug(xhr); console.debug(error); }, success: display_counts }); 

Está funcionando bien. Mi callback de success dispara correctamente con la respuesta. Pero, lo que noté es que mi callback de error se dispara cada vez, incluso cuando mi llamada devuelve el estado de éxito 200. En la callback de error anterior, veo que el objeto xhr.status es 200.

¿Alguien puede explicar lo que está mal o lo que está sucediendo aquí? Se supone que la callback por error solo se activa cuando tengo una respuesta 404 o quizás no 200. ¿Son mis suposiciones correctas?

Gracias.

Se llama a la callback de error en los errores http, pero también si falla el análisis JSON de la respuesta . Esto es lo que probablemente está sucediendo si el código de respuesta es 200, pero aún se lanza a la callback por error.

Solo como sugerencia, intente utilizar $ .ajaxSetup () para obtener el error correcto de esta manera:

 $(function() { $.ajaxSetup({ error: function(jqXHR, exception) { if (jqXHR.status === 0) { alert('Not connect.\n Verify Network.'); } else if (jqXHR.status == 404) { alert('Requested page not found. [404]'); } else if (jqXHR.status == 500) { alert('Internal Server Error [500].'); } else if (exception === 'parsererror') { alert('Requested JSON parse failed.'); } else if (exception === 'timeout') { alert('Time out error.'); } else if (exception === 'abort') { alert('Ajax request aborted.'); } else { alert('Uncaught Error.\n' + jqXHR.responseText); } } }); }); 

Algunas cosas que puedo pensar:

  1. Asegúrese de haber desactivado el almacenamiento en cache: false estableciendo el cache: false .
  2. Si está usando Firefox, intente usar Firebug y la pestaña de red para monitorear la solicitud
  3. No confíe en el analizador JSON del navegador. Yo recomendaría este: https://github.com/douglascrockford/JSON-js/blob/master/json2.js del creador de JSON no menos

Una pregunta reciente tenía un problema similar con las solicitudes de json jquery, intente eliminar surrounding () de su respuesta JSON.

No soy un experto en jQuery, pero sé que con Prototype.js, el controlador de error AJAX se desencadena si la solicitud es exitosa pero el controlador de success genera un error. ¿Es lo mismo en jQuery? Podrías probar si esto es lo que está sucediendo colocando todo el contenido de display_counts en un bloque try..catch .

Cambiar dataType desde plain/text a html