AJAX中contentType和传参格式与SpringMVC中@RequestBody注解接收有什么关系

什么是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();
    }

@RequestBody的使用添加链接描述
JQuery中文文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值