前台 ajax:
$.ajax("${pageContext.request.contextPath}/hello",// 发送请求的URL字符串。
{
dataType : "json", // 预期服务器返回的数据类型。如果服务器返回不一致,报 parseError
type : "post", // 请求方式 POST或GET
contentType:"application/json", // 发送信息至服务器时的内容编码类型,如果后台@RequestBody注释的参数是一个类,那么前台的数据可以传中文,不会乱码,但是如果后台@RequestBody注释的参数是一个字符串,那么如果前台的contentType不指定编码,传到后台的中文数据就会出现乱码
给contentType指定编码集的方法:contentType:"application/json ;charset=UTF-8"
// ;charset=UTF-8 contentType:"text/plain",
// 发送到服务器的数据。
data:"{"name":"吉晨","price":144,"description":"Spring MVC企业应用实战。。。"}",
// data:JSON.stringify({ price:12399,name : "Spring MVC企业应用实战"}),
// data:"Spring MVC企业应用实战",
async: true , // 默认设置下,所有请求均为异步请求。如果设置为false,则发送同步请求
// 请求成功后的回调函数。
success :function(data){
console.log(data);
$("#id").html(data.description);
$("#name").html(data.name);
$("#author").html(data.price);
},
// 请求出错时调用的函数
error:function(xhr,err,errObj){
console.log(err);
console.log(errObj);
alert("数据发送失败");
}
});
}
后台MVC:
@RequestMapping(value="/hello",method={RequestMethod.POST}, consumes="application/json")
// public void hello(@RequestBody String book){....} 会出现中文乱码
// ,produces="application/json"
public void hello(@RequestBody Product book){.....} 不会出现中文乱码
为什么呢???