Une requête Ajax renvoie 200 OK, mais l'événement d'erreur est déclenché au lieu du succès

Une requête Ajax renvoie 200 OK, mais l’événement d’erreur est déclenché au lieu du succès


Source : Stack Overflow

jQuery.ajax tente de convertir le corps de la réponse en fonction du paramètre dataType spécifié ou de l’en-tête Content-Type envoyé par le serveur. Si la conversion échoue (par exemple si le JSON/XML est invalide), le callback d’erreur est déclenché.

Votre code AJAX contient :

dataType: "json"

Dans ce cas, jQuery :

Évalue la réponse en tant que JSON et renvoie un objet JavaScript. […] Les données JSON sont analysées de manière stricte ; tout JSON malformé est rejeté et une erreur d’analyse est levée. […] une réponse vide est également rejetée ; le serveur devrait renvoyer une réponse null ou {} à la place.

Votre code côté serveur renvoie un extrait HTML avec un statut 200 OK. jQuery attendait du JSON valide et déclenche donc le callback d’erreur en signalant une parseerror.

La solution consiste à supprimer le paramètre dataType de votre code jQuery et à faire en sorte que le code côté serveur renvoie :

Content-Type: application/javascript

alert("Record Deleted");

Mais je vous suggérerais plutôt de renvoyer une réponse JSON et d’afficher le message dans le callback de succès :

Content-Type: application/json

{"message": "Record deleted"}