2010-10-20 8 views
12

Si je fais une requête jquery AJAX qui est réussie, je récupère mes données JSON. Cependant, si je fais une demande et que je récupère autre chose qu'un code de réponse 200, je ne peux pas récupérer les données dans le rappel Jquery. J'ai besoin des données car il a une description sur les données.Jquery obtenir des données sur l'erreur XHR

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

Des idées?

Merci

+3

De quelles "données" parlez-vous? S'il y a une erreur de serveur, d'où viendraient les "données" (autres que les informations d'erreur dans l'objet xhr)? – Pointy

+2

Oui, une réponse JSON comme ceci {'erreur': 'Votre compte n'a pas été trouvé.}} –

Répondre

18

Dans le:

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

vous pouvez utiliser

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

pour obtenir la réponse JSON en en cas d'erreur.

XMLHttpRequest.responseText 

Cheers.

+0

Pouvez-vous s'il vous plaît mettre à jour cette réponse pour inclure le nouveau style succès/échec ajax? – TheJKFever

0

Essayez le jQuery JSONP plugin. Il ajoute un rappel d'erreur à une demande JSON comme suit:

$.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 
    } 
}); 

Il le fait en utilisant un délai d'attente pour le serveur. Malheureusement, il n'y a pas d'autre moyen de dire si la réponse du serveur avec quelque chose d'autre qu'une réponse 200.

Questions connexes