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

如何在Servlet中获取前端AJAX提交的复选框选中值数组?

问题根因

  • 你AJAX请求的参数结构嵌套错误:你把delbox数组包在了object字段下,请求实际发送的参数名是object[delbox][],而非你预期的delbox,所以Servlet拿不到对应参数
  • 你调用的JSON.stringify(array)没有赋值给变量,完全没有生效
  • jQuery发送GET请求传递数组时,默认会给参数名追加[]后缀,也会导致getParameterValues("delbox")匹配不上

方案1:直接传递数组参数(无需解析JSON,最简单)

JS端修改

把你的AJAX部分改成如下代码,去掉多余嵌套,同时设置traditional: true让jQuery不追加[]后缀:

function getboxvalues(){
  var array = [];
  $("input:checkbox[name=delbox]:checked").each(function() {
    array.push($(this).val());
  });
  console.log(array);

  $.ajax({
    url: 'Deletestudent',
    dataType: 'json',
    data: {
      delbox: array // 直接传delbox作为参数名,不要包object
    },
    traditional: true, // 关键配置:禁止jQuery给数组参数加[]后缀
    type: 'GET'
  });
}

Servlet端修改

保持你现有代码即可,request.getParameterValues("delbox")就能正常拿到数组:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String[] idlistString = request.getParameterValues("delbox");
  // 后续直接操作idlistString即可
  response.getWriter().append("Served at: ").append(request.getContextPath());
}

方案2:传递JSON字符串解析

如果需要传递更复杂的结构可以用这个方案:

JS端修改

把数组序列化为JSON字符串作为单个参数传递:

function getboxvalues(){
  var array = [];
  $("input:checkbox[name=delbox]:checked").each(function() {
    array.push($(this).val());
  });
  var delboxJson = JSON.stringify(array); // 把序列化结果赋值给变量
  console.log(array);

  $.ajax({
    url: 'Deletestudent',
    dataType: 'json',
    data: {
      delbox: delboxJson
    },
    type: 'GET'
  });
}

Servlet端修改

拿到字符串后用JSON库解析为数组即可:

// 需要先引入Jackson或者Gson等JSON解析库,以下用Jackson为例
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String delboxStr = request.getParameter("delbox");
  ObjectMapper objectMapper = new ObjectMapper();
  List<String> idList = objectMapper.readValue(delboxStr, new TypeReference<List<String>>() {});
  // 后续直接操作idList即可
  response.getWriter().append("Served at: ").append(request.getContextPath());
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:30:03