angularJS 通过ajax方法提交到springMVC中文乱码的终极解决方法

      本猿最近工作闲来无事,就尝试下自己搭下当前主流的框架环境,做一些基本的web服务的功能

   我选用的框架是之前工作用到过的 BootStrap+AngularJS的前端框架,后台使用的是SSM。由于最近工作专职做后台,所以前端的一些知识有点模糊了,

      当我兴冲冲的做好网页的模版(bootsrap风格的UI),一边查文档,一边设计页面,对他的效果很满意。

    然后在搭建AngularJS时遇到了一些问题,由于angular属于单页应用,我也只有一个html作为UI,需要显示的内容放在tpl模版文件中,通过路由放在ng-view中显示,但是搭建好后,发现点击不管用,经过测试分析,原来,我把页面的ng-app在路由设置app.js和控制器文件controller.js中分别modual了一次,然后在app.js中声明,在controller.js中直接用

app.js

'use strict';

var app = angular.module('myApp', [])
  app.config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/register', {templateUrl: 'partials/register.tpl', controller: 'register'});
    $routeProvider.when('/userList', {templateUrl: 'partials/userList.tpl', controller: 'userList'});
    $routeProvider.otherwise({redirectTo: '/userList'});
  }]);

controller.js

app.controller('register',function ($scope,$http) {
	   $scope.add=function(){
		   
好了。这个问题解决了。


然后做增删该查操作,开始没注意,用angularjs自带的ajax方法 $http把表单数据发送到后台SpringMVC,然后直接显示在table列表中,在更新时遇到了问题,发现数据库中文都是乱码。

于是查询了数据库底层编码是UTF-8,页面,后台统一是UTF-8编码,编码过滤器也加上了,依然不管用。

经过多次断点调试我觉得是 angularJS ajax提交的问题,他提交过程中会默认都转成IOS-8859-1,这样我每次提交或者更新数据,都要对带中文的字段进行一次转码成UTF-8,觉得这样不是办法。

在家休息了一下,我觉得我的项目也同时引入了Jquey,能不能使用jquey的ajax提交方法呢,于是上班后我就开始尝试改造成jquery 的$.post方法提交数据,竟然可以跳到后台,然后中文竟然也正常,好开森。

大家是不是觉得到这里就完了? 不,下面才是这篇要讲的重点。

然后我就继续利用bootstrap的消息提醒组件,继续开发一个提交完成后的消息通知效果,哎呀,完蛋,返回的中文字符串竟然乱码了,看下日志信息,大概意思是springMVC返回的数据字符串编码为ISO-8859-1.


之前通过其他配置,把页面显示乱码的问题,解决了,但是应答后的回调数据还是乱码,于是本猿又根据这个问题,翻遍网络,找到了乱码配置的终极解决方案,分享出来。

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >  
  <property name="messageConverters">   
         <list>   
             <bean class = "org.springframework.http.converter.StringHttpMessageConverter">   
                <property name = "supportedMediaTypes">
                      <list>
                          <value>text/html;charset=UTF-8</value>   
                     </list>   
                </property>   
             </bean>   
         </list>   
   </property>  
</bean>  


   在spring-mvc.xml文件中加入这段配置后,spring返回给页面的都是utf-8编码了。

到此,问题解决了。


后来我又找到了不使用jquery的解决办法,看起来比较麻烦而已

 var url = 'user/getPageUser.do',
	            data = {
					  'pageSize': num,
					  'userName': username
	            },
	            transFn = function(data) {
	                return $.param(data);
	            },
	            postCfg = {
	                headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
	                transformRequest: transFn
	            };

			  
			  $http.post(url, data, postCfg).success(function(data){



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值