SpringBoot和AJAX

ajax写法不同,springboot接收参数的方式也不同

ajax如果这样写:
有两点注意:contentType指定为json,那么data需要用stringify包装,否则@RequestParam就要报错了(返回状态码400)
另外,json数据不能用@RequestParam接收,因为@RequestParam接收的是url后面跟着的参数,而不是body中的

 $.ajax({
     url:"http://127.0.0.1:8088/hello/u2",
     data: JSON.stringify({
         name: "adam",
         callback: "fuck"
     }),
     type: "post",
     contentType: "application/json",
     success: function (data) {
         console.log("收到了?");
         console.log(data);
     },
     error: function () {
         console.log("error");
     }
 })

ajax的默认写法:
不能用@RequestBody接收,因为无法解析原始的contentType:application/x-www-form-urlencoded

 $.ajax({
     url:"http://127.0.0.1:8088/hello/u2",
     data: {
         name: "adam",
         callback: "fuck"
     },
     type: "post",
     success: function (data) {
         console.log("收到了?");
         console.log(data);
     },
     error: function () {
         console.log("error");
     }
 })

后端写法:

@Slf4j
@RestController
@RequestMapping("/hello")
public class SimpleController {

    @RequestMapping("/u1")
    public String u1(String name, String callback){
        log.info("有请求1");
        log.info("name:{}",name);
        log.info("callback:{}",callback);


        return callback+"({price:10})";
    }

    @RequestMapping("/u2")
    public String u2(@RequestBody Util thing){
        log.info("有请求2");
        log.info("name:{}",thing.getName());
        log.info("callback:{}",thing.getCallback());

        return thing.getCallback()+"({price:10})";
    }

    @RequestMapping("/u3")
    public String u3(@RequestParam("name") String name, @RequestParam("callback") String callback){
        log.info("有请求3");
        log.info("name:{}",name);
        log.info("callback:{}",callback);
        return callback+"({price:10})";
    }

    @RequestMapping("/u4")
    public String u4(HttpServletRequest req){
        log.info("有请求4");
        log.info("name:{}",req.getParameter("name"));
        log.info("callback:{}",req.getParameter("callback"));

        return req.getParameter("callback")+"({price:10})";
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值