首页 > 代码库 > springmvc,通过ajax方式提交页面数据,后台返回json数据中文信息乱码

springmvc,通过ajax方式提交页面数据,后台返回json数据中文信息乱码

本人刚开始接触springmvc,项目搭建参照https://my.oschina.net/gaussik/blog/385697。在用IDEA写登录注册的时候,想通过ajax方式提交数据到后台,然后遇到如题所述的乱码问题,然后度娘了好多,终于解决了。废话不多说,直接上代码。

首先是登录页面login.jsp

技术分享
 1 <%--
 2   Created by IntelliJ IDEA.
 3   User: PENG027
 4   Date: 2016/11/11
 5   Time: 15:48
 6   To change this template use File | Settings | File Templates.
 7 --%>
 8 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" language="java" %>
 9 <html>
10 <head>
11     <title>index</title>
12     <script type="text/javascript" src="http://www.mamicode.com/js/jquery.min.js"></script>
13     <script type="text/javascript">
14         function login() {
15             var name=$("#id1").val();
16             var pwd=$("#id2").val();
17             $.ajax({
18                 url:‘/login‘,
19                 type:‘post‘,
20                 contentType:‘application/json‘,
21                 data:JSON.stringify({‘username‘:name,‘password‘:pwd}),
22                 dataType:‘json‘,
23                 async:false,
24                 success:function (msg) {
25 //                    alert("页面内容改变");
26 //                    $("#p").text(msg.msg);
27                     window.location.href="http://www.mamicode.com/success.jsp?id="+Math.random();
28                 },
29                 error:function () {
30                     alert("failure");
31                 }
32             });
33         }
34     </script>
35 </head>
36 <body>
37 <form>
38     username:<input id="id1" type="text" name="username"/><br>
39     password:<input id="id2" type="password" name="password"/><br>
40     <input id="id3" type="button" value="http://www.mamicode.com/登录" onclick="login()"/><br>
41     <%--<p id="p">点击登录之后我会改变</p>--%>
42 </form>
43 </body>
44 </html>
View Code

然后是后台Java代码

技术分享
 1 package controller;
 2 
 3 import org.json.JSONException;
 4 import org.json.JSONObject;
 5 import org.springframework.stereotype.Controller;
 6 import org.springframework.ui.Model;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.ResponseBody;
 9 
10 @Controller
11 public class MainController {
12     @ResponseBody
13     /*
14     注意了,就是这儿。我之前是这么写的。修改之后记得重启服务器。
15     @RequestMapping("/login")
16      */
17     @RequestMapping(value = "http://www.mamicode.com/login", produces = {"text/html;charset=UTF-8;"})
18     public String hello(Model model) {
19         JSONObject jsonObject = new JSONObject();
20         try {
21             jsonObject.put("msg","中文乱码");
22         } catch (JSONException e) {
23             e.printStackTrace();
24         }
25         return jsonObject.toString();
26 //        return "success";
27     }
28 }
View Code
修改之后记得重启服务器
修改之后记得重启服务器
修改之后记得重启服务器
重要的事说三遍,修改的地方就加上
produces = {"text/html;charset=UTF-8;"}
这几个字,但是没有重启服务器,搞了四个小时。


springmvc,通过ajax方式提交页面数据,后台返回json数据中文信息乱码