Cet article partage principalement avec vous une solution au problème selon lequel la requête Ajax est envoyée avec succès mais n'entre pas dans le succès. Elle a une bonne valeur de référence et j'espère qu'elle sera utile à tout le monde. Suivons l'éditeur et jetons un œil. J'espère que cela pourra aider tout le monde.
1. Description de la situation : ajax est envoyé avec succès, l'arrière-plan répond également avec succès à la demande et renvoie les données json. Vous pouvez également voir les données json de réponse en surveillant la demande via Chrome, mais le. La méthode de réussite n'est pas saisie. Au lieu de cela, elle a rencontré la méthode d'erreur
Front-end :
$.ajax({ type : "get", data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()}, url : "${ctp}/ViewOperate/ShowViewSql", dataType : "json", success : function(data){ console.log(data); layer.alert(data,{ skin: 'layui-layer-molv' }); } error : function(data){ layer.alert("进入了error方法",{ skin: 'layui-layer-molv' }); } });
Back-end :
@RequestMapping(value="/ShowViewSql",method=RequestMethod.GET) @ResponseBody public String showCreateViewSql(@RequestParam(value="dbId",required=false)Integer dbId, @RequestParam(value="viewId",required=false)Integer viewId) { return "abc"; }
Raison : Le json. les données renvoyées par l'arrière-plan sont un objet de type String pur. Lorsque l'attribut dataType frontal est défini sur json, il sera considéré que le format de données json converti à partir de l'objet String n'est pas le format json standard, donc la méthode correspondant au l'erreur sera exécutée.
Solution : Pas besoin de changer de backend, définissez simplement l'attribut dataType dans la requête ajax du front-end en texte
$.ajax({ type : "get", data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()}, url : "${ctp}/ViewOperate/ShowViewSql", dataType : "text", success : function(data){ console.log(data); layer.alert(data,{ skin: 'layui-layer-molv' }); } error : function(data){ layer.alert("进入了error方法",{ skin: 'layui-layer-molv' }); } });
Cas particulier : Lorsque le numéro json renvoyé par le backend est similaire à " 1", "2", "22", "232123", "-1", "232123.44" est une chaîne numérique, et lorsque l'attribut dataType frontal est défini sur json, la méthode de réussite peut être saisie normalement. La raison est inconnue.
Recommandations associées :
Une brève analyse du problème des données JSON transmises à partir du succès en arrière-plan Ajax
Aperçu du succès et des erreurs méthodes de saut de page ThinkPHP _PHP tutoriel
La différence entre réussir et terminer dans jQuery.ajax
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!