什么是contentType?contentType和dataType的区别?
contentType是设置你发给服务器的格式,默认是application/x-www-form-urlencoded格式,常用的还有application/json、multipart/form-data(文件),其他contentType格式。
contentType和dataType的区别,contentType是设置你发给服务器的格式,dataType是收到服务器数据的格式(dataType默认一般都是JSON格式)
AJAX传数据,GET方法和POST方法中的contentType的区别?以及各自传参格式区别?
默认情况下,Ajax请求使用GET方法。如果要使用POST方法,可以设定type参数值。这个选项也会影响data选项中的内容如何发送到服务器。data选项既可以包含一个查询字符串,比如 key1=value1&key2=value2 ,也可以是一个映射,比如 {key1: ‘value1’, key2: ‘value2’} 。如果使用了后者的形式,则数据再发送器会被转换成查询字符串。这个处理过程也可以通过设置processData选项为false来回避。如果我们希望发送一个XML对象给服务器时,这种处理可能并不合适。并且在这种情况下,我们也应当改变contentType选项的值,用其他合适的MIME类型来取代默认的 application/x-www-form-urlencoded 。
如果contentType是默认值的话,可以传字符串,和JSON对象,但是根据上一段中的描述,会自动转换成查询字符串,而contentType为application/json时,必须为是字符串,也就是JSON对象字符串。
不同的contentType后台接收的区别?
- 第一种:contentType:默认
使用@RequestParam注解接收单个或几个参数,也可以忽略@RequestParam不写,只是要注意两者的区别
$.ajax({
url: "xxxx/doRegister",
type: "POST",
datType: "JSON",
data: "username=xxx&password=xxxx",
async: false,
success: function () {}
});
@RequestMapping("intro")
public SysResult getClassIntroByClassCode(@RequestParam("classCode") String classCode){
String classIntro = iClassService.getClassIntroByClassCode(classCode);
System.out.println(classIntro);
return SysResult.success(classIntro);
}
使用实体类接收多个参数
var user ={xxx:xxx,...}
$.ajax({
url: "xxxx/doRegister",
type: "POST",
datType: "JSON",
data: user,
async: false,
success: function () {}
});
@ResponseBody
@RequestMapping("/doRegister")
public SysResult register(User user){
int result = IUserService.insert(user);
return SysResult.success();
}
- 第二种:contentType:application/json
使用@RequestBody注解接收,而且@RequestBody和@RequestParam可以一起使用
var user ={xxx:xxx,...}
$.ajax({
url: "xxxx/doRegister",
type: "POST",
datType: "JSON",
contentType: "application/json"
data: JSON.stringfy(user),
async: false,
success: function () {}
});
@ResponseBody
@RequestMapping("/doRegister")
public SysResult register(@RequestBody User user){
int result = IUserService.insert(user);
return SysResult.success();
}