Maison >Java >javaDidacticiel >Comment interagir avec json lorsque la valeur de retour de la méthode du contrôleur est un type simple ?
Cet article présente principalement la méthode du contrôleur d'interaction de données json de springmvc. La valeur de retour de la méthode du contrôleur est un type simple, ce qui est d'une grande valeur pratique. Les amis dans le besoin peuvent s'y référer
Lorsque le la valeur de retour de la méthode du contrôleur est un type simple tel que String Comment interagir avec json ?
Utilisez @RequestBody
Par exemple, le code est le suivant :
@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8") @ResponseBody public String ceshijson(@RequestBody String channelId) throws IOException{ return channelId;
Si le code est comme ce qui précède, la réception Lors de l'envoi de json, il doit être écrit comme ceci (il existe de nombreuses façons de l'écrire, utilisez-le simplement)
function channel(){ //先获取选中的值 var channelId = $("#channelId option:selected").val(); //来判断发送的链接 if(channelId ==2){ $.ajax({ url:"ceshijson", type:"post", dataType:'json', contentType:'application/json;charset=utf-8', data:JSON.stringify({'channelId':channelId}), success:function(data){ alert(data.channelId); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert("Error") alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } }); } }
Une attention particulière doit être portée ici : comme souligné dans le article précédent, lorsque @RequestBody est utilisé, il nécessite le String channelId pour recevoir les données. Autrement dit, si les données sont écrites comme ceci : data:{'channelId':channelId}, c'est faux. Parce que c'est le formulaire jsonobject. Si vous ne souhaitez pas utiliser la fonction JSON.stringify()
, épissez manuellement les chaînes vous-même :
Notez également que ChannelId est dans guillemets doubles. Il ne peut pas être écrit entre guillemets simples car il s’agit d’une règle de syntaxe JSON. Si vous le remplacez par des guillemets simples, c'est-à-dire quedata:'{"channelId":'+channelId+'}'
** est incorrectement écrit comme
Bien qu'il puisse être transmis au backend, undefined apparaîtra lorsqu'il sera renvoyé par. le back-end. Autrement dit,data:"{'channelId':"+channelId+"}"key
doit être entouré de guillemets doubles.
Ne pas utiliser @RequestBodyCode frontal
@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8") @ResponseBody public String ceshijson(String channelId) throws IOException{ Map<String,Object> map = new HashMap<String,Object>(); map.put("channelId", channelId); ObjectMapper mapper = new ObjectMapper(); channelId = mapper.writeValueAsString(map); return channelId; }De cette façon, utilise writeValueAsString dans ObjectMapper pour convertir des objets Java en json Chaîne.
$.ajax({ url:"ceshijson", type:"post", dataType:'json', //contentType:'application/json;charset=utf-8', data:"channelId="+channelId, success:function(data){ alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert("Error") alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } });
Résumé : Cette méthode n'a en réalité pas beaucoup de sens pratique, car les données ne sont généralement pas reçues de cette manière. Comprenez simplement !
【Recommandations associées】
1.
Recommandation spéciale : "php Programmer Toolbox" version V0.1 Télécharger2.
Tutoriel vidéo gratuit JavaTutoriel vidéo JAVA pour débutantCe 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!