ajax请求后台controller的时候发送过去的内容编码类型:
类型一:contentType: “application/json; charset=utf-8”,
类型二:contentType: “text/xml”,
类型三:contentType:”application/x-www-form-urlencoded”,
data:”json”,data:”text”//表示的是从服务器返回的类型
用类型一:contentType: “application/json; charset=utf-8”, 发送数据内容格式给服务器
后台用@RequestBody接收,例子如下:
<script>
function register() {
var params = {
"username": $("#username").val(),
"phone": $("#phone").val(),
"password": $("#password").val(),
"idNum": $("#idNum").val(),
"realName": $("#realName").val(),
}
$.ajax({
type: "post",
url: "/doRegister",
data: JSON.stringify(params),
dataType: 'text',//特别注意返回类型未text,之前用json导致执行error,还不知道原因为啥,求解
contentType: 'application/json;charset=UTF-8',//后台用@RequestBody接收,可用实体接收或字符串接收都可以
success: function (data) {
//ajax发送的url到控制层不会进行页面跳转,当请求成功以后,请求会回success,所以可在此再写一遍url进行跳转
$(location).attr('href', 'login.html');//这是$.ajax({...});是jQuery用的页面跳转方法,建议使用
//window.location.href = "/login"; //原生的js的页面跳转,有可能导致无法识别
},
error:function (e) {
console.log("error")
alert("error+e= "+e)
}
})
}
</script>
后台controller:
@RequestMapping(value = "/doRegister",method=RequestMethod.POST)
@ResponseBody
/* public String doRegister(@RequestParam("username") String username ,@RequestParam(value = "password",required = false) String password
,@RequestParam(value = "phone",required = false) String phone ,@RequestParam(value = "idNum",required = false) String idNum
,@RequestParam(value = "realName",required = false) String realName){
logger.info("doRegister() 方法被调用");
boolean result=userService.registerData(username,phone,password,idNum,realName);*/
public String doRegister(@RequestBody UserVO uservo){ //实体接收方式
System.out.println("doRegister= realName===="+uservo.getRealName());
//注册方法....
if(result==true){
return "login";
}
return "register";
}