2010-10-20 18 views
12

Si realizo una solicitud de jquery AJAX que es exitosa, recupero mis datos JSON. Sin embargo, si realizo una solicitud y recibo algo más que un código de respuesta 200, no puedo recuperar los datos en la llamada de Jquery. Necesito los datos ya que tiene una descripción sobre los datos.Jquery obtener datos sobre el error XHR

success: function (data, tst, xhr) { 
    $.log('XHR OK'); 
}, 
error: function (xhr, tst, err) { 
    $.log('XHR ERROR ' + XMLHttpRequest.status); 
}, 

¿Alguna idea?

Gracias

+3

¿De qué "datos" está hablando? Si hay un error del servidor, ¿de dónde vendría cualquier "información" (que no sea la información de error en el objeto xhr)? – Pointy

+2

Sí, una respuesta JSON como esta {'error': 'No se encontró su cuenta.'} –

Respuesta

18

En:

error: function (xhr, tst, err) { 
    $.log('XHR ERROR ' + XMLHttpRequest.status); 
}, 

puede utilizar

error: function (XMLHttpRequest, textStatus, errorThrown) { 
    $.log('XHR ERROR ' + XMLHttpRequest.status); 
    return JSON.parse(XMLHttpRequest.responseText); 
}, 

para obtener la respuesta JSON en en caso de error.

XMLHttpRequest.responseText 

Cheers.

+0

¿Puede actualizar esta respuesta para incluir el estilo éxito/falla ajax más reciente? – TheJKFever

0

Prueba el jQuery JSONP plugin. Se añade una respuesta de error a una solicitud JSON así:

$.jsonp({ 
    url: "Your URL", 
    data: {data: "Some Data"}, 
    dataType: 'jsonp', 
    timeout: 2000, 
    success: function(data, status) { 
     // Do something with data here 
    }, 
    error: function(xhr, text_status){ 
     // Handle the server error 
    } 
}); 

Para ello, utiliza un tiempo de espera para esperar el servidor. Lamentablemente, no hay otra forma de saber si la respuesta del servidor es distinta de una respuesta 200.

Cuestiones relacionadas