Cet article présente principalement l'explication détaillée de la méthode d'interaction de springMVC avec les données json. L'éditeur pense qu'elle est assez bonne, je vais donc la partager avec vous maintenant et la donner comme référence. Suivons l'éditeur et jetons un coup d'œil.
Code de la réception :
function channel(){ //先获取选中的值 var channelId = $("#channelId option:selected").val(); //来判断发送的链接 if(channelId ==2){ **需要注意地方 start** var schoolBannerInfo = { "img": channelId, "title": channelId, "info": channelId, "channelId": channelId }; **需要注意地方 end** $.ajax({ url:"ceshijson", type:"post", dataType:'json', **需要注意地方 start** contentType:'application/json;charset=utf-8', data:JSON.stringify(schoolBannerInfo), **需要注意地方 end** success:function(data){ alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert("Error") alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } }); } }
La partie en gras est ce à quoi vous devez faire attention.
Le contentType:'application/json;charset=utf-8' ne peut pas être omis, sinon une erreur 415 sera signalée.
Après tout, ce que j'envoie, c'est du jsonstring, je dois donc dire au serveur que les données à venir sont des données json.
JSON.stringify() consiste à convertir un objet JavaScript en chaîne json
JSON.parse(jsonstr) consiste à convertir une chaîne json en objet JavaScript
Connaissances supplémentaires : json est en fait un sous-ensemble de JavaScript.
Adresse de référence : www.jb51.net/article/35090.htm
Code backend :
classe pojo :
public class SchoolBannerInfo { private Integer id; private Date createTime; private String img; private String title; private String info; private Integer seq; private Integer schoolId; private String type; private boolean enable; private String link; private String channelId; }
Les méthodes get et set sont générées par vous-même, je ne les publierai donc pas ici.
Méthode dans le contrôleur :
@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8") @ResponseBody public SchoolBannerInfo ceshijson(@RequestBody SchoolBannerInfo schoolBannerInfo) throws IOException{ // Map<String,Object> map = new HashMap<String,Object>(); // map.put("channelId", channelId); // ObjectMapper mapper = new ObjectMapper(); // channelId = mapper.writeValueAsString(map); return schoolBannerInfo; }
Remarque :
1 @RequestBody ne peut pas être omis car il est envoyé. par la réception Les données sont des données json, vous devez utiliser cette annotation pour analyser comment recevoir ces données vers l'objet de la classe pojo.
2. Parce que je veux aussi renvoyer des données json. Par conséquent, cette annotation @ResponseBody est nécessaire pour convertir l'objet Java en une chaîne json
3. Lors de l'utilisation de @RequestBody, les données transmises par la réception doivent être une chaîne json. S'il s'agit d'un objet json, une erreur se produira. Donc, si vous écrivez ceci dans la partie données du frontend : data:{"channelId":2}, cela ne fonctionnera pas. Étant donné que {"channelId":2} est un objet json, vous devez ajouter des guillemets '{"channelId":2}' dans la couche externe.
4. Que faire si la valeur de retour de la méthode est un type simple tel que String !
【Recommandations associées】
1. Recommandation spéciale : "php Programmer Toolbox" version V0.1 Télécharger
2. Tutoriel vidéo gratuit Java
3 Tutoriel vidéo JAVA pour débutant
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!