Maison  >  Article  >  développement back-end  >  Comment résoudre le problème de l'envoi réussi d'une requête Ajax mais sans succès

Comment résoudre le problème de l'envoi réussi d'une requête Ajax mais sans succès

小云云
小云云original
2018-01-19 09:53:383094parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn