当用 @ResponseBody向ajax中返回String类型数据遇到的坑

坑一:我用的dataType是json。
此时从后台传过来得String类型数据一直显示null。
解决:将json改为text.你后台传过来的东西直接显示。
解释:
在默认的Spring配置中,当在返回类型为String的Controller方法时,在其上加上@ResponseBody时会出现问题,那就是返回的不再是我们期待的Json格式的字符串了,而是会变成在正常的Json串前后加上双引号。这是为什么呢?这是因为在HTTPMessageConverter中对应写json格式相应的处理类在写json的时候默认是对String类型进行这样处理的。
dataType值如果为’json’,jquery就会把后端返回的字符串尝试通过JSON.parse()尝试解析为js对象。
dataType值如果为’text’,结果弹出框直接显示后台返回的json字符串。
dataType值如果为’html’,结果弹出框直接显示后台返回的json字符串。

我觉得就是这个意思我们本身是String类型数据,返回类型为json又给我们自动添加了“”,导致前台不能解析。
坑二:能返回String类型得数据了吧,但是是乱码的,是一对问好。
解决方法:在此处添加如下代码produces = {"application/json;charset=UTF-8"}解决问题
在这里插入图片描述
表示将生产json格式的数据,此时根据请求头中的Accept进行匹配,如请求头
“Accept:application/json”时即可匹配

终极解决方法:
当我需要一个string类型的信息作为ajax结果时候,可以设置:
@RequestMapping(value = “/updatePwd”,method = RequestMethod.GET,produces =“text/html;charset=utf-8”)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值