257 votes

Comment obtenir le jQuery $.ajax d'erreur texte de la réponse?

Je suis l'envoi d'une réponse d'erreur à mon jQuery. Cependant, je ne peux pas obtenir le texte de la réponse (dans l'exemple ci-dessous ce serait Allés à la plage)

La seule chose que jQuery est dit "erreur".

Voir cet exemple pour plus de détails:

php

<?
header('HTTP/1.1 500 Internal Server Error');
print "Gone to the beach"
?>

jQuery

$.ajax({
type: "post",
data: { id : 0 },
cache: false,
url: "doIt.php" ,
dataType: "text",
error: function(request,error) 
{
 console.log(arguments);
 alert ( " Can't do because: " + error );
}
success: function ( )
{
 alert ( " Done ! " );
});

maintenant mon résultat ist:

journal:

 [XMLHttpRequest readyState=4 status=500, "error", undefined]

alerte:

Ne peut pas le faire en raison: erreur

Des idées?

329voto

Alex Bagnolini Points 7403

Essayez:

error: function(xhr, status, error) {
  var err = eval("(" + xhr.responseText + ")");
  alert(err.Message);
}

Regardez aussi ce encosia article pour une bonne gestion des erreurs.

60voto

HaoQi Li Points 2200

Pour moi, cela fonctionne simplement:

error: function(xhr, status, error) {
  alert(xhr.responseText);
}

56voto

tvanfosson Points 268301

Regardez l' responseText de la propriété du paramètre de la requête.

7voto

user3255682 Points 11

C'est ce qui a fonctionné pour moi

    function showErrorMessage(xhr, status, error) {
        if (xhr.responseText != "") {

            var jsonResponseText = $.parseJSON(xhr.responseText);
            var jsonResponseStatus = '';
            var message = '';
            $.each(jsonResponseText, function(name, val) {
                if (name == "ResponseStatus") {
                    jsonResponseStatus = $.parseJSON(JSON.stringify(val));
                     $.each(jsonResponseStatus, function(name2, val2) {
                         if (name2 == "Message") {
                             message = val2;
                         }
                     });
                }
            });

            alert(message);
        }
    }

4voto

85tisgirjetuji8 Points 39

vous pouvez l'essayer aussi:

$(document).ajaxError(
    function (event, jqXHR, ajaxSettings, thrownError) {
        alert('[event:' + event + '], [jqXHR:' + jqXHR + '], [ajaxSettings:' + ajaxSettings + '], [thrownError:' + thrownError + '])');
    });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X