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

Posted 渣渣程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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="/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="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="登录" 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 = "/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数据中文信息乱码的主要内容,如果未能解决你的问题,请参考以下文章

springmvc返回值数据写到页面表单提交ajax重定向

Spring MVC 学习笔记 --- [SpringMVC的数据响应(Ajax提交请求后,用JSON格式响应数据)]

ajax-springMVC提交表单的方式

js通过生成临时表单再删除的方式向后台提交数据(模拟ajax的post提交但还要跳转页面不返回数据)

springmvc ajax 页面无法重定向问题!!!!

ajax post提交到SpringMVC的Controller并将处理结果传递到前台输出总结-- springmvc 控制器获取参数的几种方式