测试jquery中ajax的post提交与springController接收的一些疑问

1.@RequestBody String类型可接收 ajax中data为对象的数据,并以key=value(utf-8编码)展现:

  • ajax提交:
    data:{aa:"你好 中国 中国"},
    contentType:"application/json"

  • controller接收:
    接收方式
    接收结果
    如果stringify处理过data, map的值就是正常的json串

  • 两点需要注意:

    1.jquery的ajax会把object对象string化
    2.contentType=”application/json”,未指定编码格式,data的中文编码均utf-8格式编码,contetnType如下设置编码格式均无效,
    //contentType:”application/json”,
    contentType:”application/json; charset=gbk”,
    //contentType:”application/json;charset=utf-8”
    并且页面设置了meta依然无效:meta charset=”gbk”

2.data不是json格式时,@RequestBody String body,接收,接口返回400错误(aa没有加双引号,使用了stringify,不加引号也可正常发送)

  • 使用json.stringify()

    //data:{aa:”你好 中国 中国5”}改为下面的方式:
    data:JSON.stringify({aa:”你好 中国 中国5”}),

    否则报错:Status Code: 400 Bad Request

    使用实体接收也是400
    @RequestBody ReceiveModel model

3. 使用JSON.stringify处理data,但不设置contentType=application/json时(默认 application/x-www-form-urlencoded; charset=utf-8)

  • 此时 @requestbody String body 的值会有些特别
    bb=bb&%7B%22aa%22%3A%22%E4%BD%A0%E5%A5%BD++%E4%B8%AD%E5%9B%BD++%E4%B8%AD%E5%9B%BD5%22%7D=
    解码后:bb=bb&{“aa”:”你好 中国 中国5”}=,即body的值作为一个key传入了

  • 此时 @requestbody Entity entity 则报415错误:415 Unsupported Media Type

  • 因此应该呆以认为:x-www-form-urlencoded:charset=utf-8传上来的body都是string类型

4. ajax不使用json.stringify处理data, 后台用@requestbody Entity entity 接收(默认的contentType:x-www-form-urlencoded)

data:{"aa":"你好  中国  中国"},
@RequestBody ReceiveModel model

报错:415 Unsupported Media Type

使用 @requestbody  String body依然报错:
报错:415 Unsupported Media Type

- 不使用json.stringity, 无论是entity还是string都无法接收body

5. List与数组均可以接收 data中的数组属性

实体属性:
private List<String> names;

private String[] names2;

ajax data:
data:JSON.stringify({aa:"你好  中国  中国5","names":    ["a","b","c"],"names2":["a","b","c"]}),
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java,使用ajax发送请求时,可以通过data属性向后端传递数据。data属性可以接受一个对象,这个对象包含了需要传递的数据。 举一个简单的例子,比如前端需要向后端传递一个名字和年龄,可以按照以下方式设置ajax请求: ```javascript $.ajax({ type: "POST", url: "/user", data: { name: "张三", age: 18 }, success: function (data) { console.log(data); } }); ``` 在上面的代码,我们使用了jQueryajax方法向后端发送了一个POST请求,请求的地址为`/user`。在data属性,我们传递了一个对象,这个对象包含了两个属性:`name`和`age`,它们的值分别为`"张三"`和`18`。 后端接收到这个请求后,就可以通过获取传递过来的参数,来处理业务逻辑。比如,可以使用Spring MVC框架,在Controller定义一个方法,使用`@RequestParam`注解来获取参数: ```java @RestController @RequestMapping("/user") public class UserController { @PostMapping public String addUser(@RequestParam("name") String name, @RequestParam("age") Integer age) { // 处理业务逻辑 return "添加用户成功"; } } ``` 在上面的代码,我们使用了Spring MVC框架,在方法的参数,使用了`@RequestParam`注解来获取前端传递过来的参数。其,`name`和`age`参数的名称与前端传递过来的参数名称保持一致。在方法,我们可以根据获取到的参数来处理业务逻辑,最后返回一个结果。 当然,在实际开发,我们还需要处理一些异常情况,比如参数不正确等,这里就不再赘述了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值