web-dev-qa-db-fra.com

Capturez l'état 404 avec jQuery AJAX

J'ai ce code:

$.ajax({ cache: false,
    url: "/Admin/Contents/GetData",
    data: { accountID: AccountID },
    success: function (data) {
        $('#CityID').html(data);
    },
    error: function (ajaxContext) {
        alert(ajaxContext.responseText)
    }
});

Je suis toujours confus au sujet du ajaxContext et de la façon de capturer les codes de retour 404. Cependant, j'ai une autre question. Je lis quelque chose sur le codage avec succès et échec et n'utilise plus d'erreur dans les versions récentes de jQuery.

Dois-je donc changer mon code pour utiliser done et fail. Comment puis-je vérifier pour un 404?

18
Alan2

Remplacez votre fonction d'erreur comme suit ...

error:function (xhr, ajaxOptions, thrownError){
    if(xhr.status==404) {
        alert(thrownError);
    }
}
31
JayTee

404 erros seront traités par la fonction anonyme connectée à la propriété error. Tout autre chose qu'une requête HTTP réussie vers l'URL (c'est-à-dire 2xx) déclenchera la méthode d'erreur. Les éléments suivants fonctionneront pour votre objectif:

error : function(jqXHR, textStatus, errorThrown) { 
    if(jqXHR.status == 404 || errorThrown == 'Not Found') 
    { 
        console.log('There was a 404 error.'); 
    }
}

Lorsqu'ils se réfèrent à la suppression des fonctions success et error dans la documentation jQuery, ils font référence à celles de la classe jqXHR, pas aux propriétés de $.ajax().

4
BenM