Comment obtenir une erreur 406 (non acceptable) dans jQuery

Je suis en train de gérer les erreurs dans my.js, où je rencontre des appels interdomaines vers un autre serveur, ainsi que pour le modèle HTML dynamic, j’utilise Moustache.js.

$.getJSON(url, function(data, textStatus, xhr) { $.each(data, function(i, data) { introPage(data); }); }).fail(function(Error) { alert(Error.status); }); function introPage(data ) { $.getJSON('myphp.php?jsoncallback=?&template='+testTemplate, function(msg) { // my operations }).error(function(data) { }); } 

Nous avons .fail () dans getJSON pour corriger les erreurs dans getJSON . Je suis capable d’attraper l’erreur 404 (non trouvée) mais quand il s’agit d’une erreur 406 (non acceptable ou dire entrée invalide) ou d’une erreur 401 (access non autorisé), .fail () ne semble pas fonctionner

mais jette l’erreur dans la console ERREUR JSON DANS LA CONSOLE

Aussi quand je clique sur le lien. il montre une erreur dans le rappel jquery au format ci-dessous

 jQuery191014790988666936755_1378113963780({ "error": { "code": 406, "message": "Not Acceptable: Sorry, There are no results to display for the given input." } }); 

Maintenant, je me demande comment obtenir cette erreur dans mon JS. Je ne reçois pas le code d’erreur 406 et 401. J’ai besoin de ce code d’erreur pour afficher la page d’erreur appropriée.

Je vous remercie

À en juger par le jsoncallback=? paramètre et la réponse jQuery191...780({...}) , il semble que jQuery génère une demande JSONP. Les demandes JSONP ne sont pas soumises aux mêmes ressortingctions de stratégie d’origine, mais elles présentent les limitations suivantes , décrites ici :

Remarque: Ce gestionnaire [d’erreur] n’est pas appelé pour les requêtes de script et de domaine JSONP entre domaines.

La solution:

  1. Créer une requête JSON pure si le serveur autorise les requêtes entre domaines
  2. Regardez les réponses à ces questions:
    • Comment puis-je intercepter l’erreur jQuery $ .getJSON […] lorsque j’utilise JSONP?
    • jQuery ajax (jsonp) ignore un délai d’expiration et ne déclenche pas l’événement d’erreur
  3. Utilisez jquery-jsonp – il ne vous donne pas le code d’erreur HTTP