You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AJAX向Spring Boot Controller传递count与pno参数?

问题描述

我通过以下JS代码向Spring Boot Controller传递count和pno参数,但一直无法成功接收:

JS 代码

console.log(count);//10
console.log(pno);//4

var form = {
    count:count,
    pno:pno
}
        
$.ajax({
    url: 'product/basket/change',
    type: 'POST',
    data:form
});

Spring Boot Controller 代码

@ResponseBody
@PostMapping("/product/basket/change")
public void basketChange(@RequestParam(name = "form") Map<String, String> data ....){
    ....
}
解决方法

问题出在Controller的参数接收逻辑上:AJAX发送的是count和pno两个独立参数,而非名为form的复合参数,以下是几种可行的修正方案:

方案1:直接接收单个参数

在Controller方法中直接声明对应参数,Spring会自动完成参数映射:

@ResponseBody
@PostMapping("/product/basket/change")
public void basketChange(@RequestParam Integer count, @RequestParam Integer pno) {
    // 直接使用count和pno参数
}

方案2:用Map接收所有请求参数

去掉@RequestParam的name="form"属性,直接用Map接收所有请求参数:

@ResponseBody
@PostMapping("/product/basket/change")
public void basketChange(@RequestParam Map<String, String> data) {
    Integer count = Integer.parseInt(data.get("count"));
    Integer pno = Integer.parseInt(data.get("pno"));
    // 后续业务逻辑
}

方案3:用实体类封装参数

如果参数数量较多,可定义实体类统一封装:

实体类定义

public class BasketForm {
    private Integer count;
    private Integer pno;
    
    // 生成getter、setter方法
}

Controller修改

@ResponseBody
@PostMapping("/product/basket/change")
public void basketChange(BasketForm form) {
    Integer count = form.getCount();
    Integer pno = form.getPno();
    // 后续业务逻辑
}

额外说明

  • 你的AJAX代码无需修改,$.ajax默认会将form对象序列化为application/x-www-form-urlencoded格式,Spring可直接解析。
  • 若要改用JSON格式传递参数,需修改AJAX配置并调整Controller接收方式:
    $.ajax({
        url: 'product/basket/change',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(form)
    });
    
    对应Controller:
    @ResponseBody
    @PostMapping("/product/basket/change")
    public void basketChange(@RequestBody BasketForm form) {
        // 后续业务逻辑
    }
    

内容的提问来源于stack exchange,提问作者DarkGalBi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 02:05:05