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

点击jQuery绑定的复选框时发往insert.php的POST请求成倍增加如何解决

问题原因
  • 事件绑定重复嵌套:你将input:checkbox的change事件监听器绑定逻辑,放在了#submiter的click事件回调内部。每点击一次复选框,就会给所有复选框额外新增一次change事件绑定,旧的绑定不会自动清除,点击N次就绑定了N个事件监听器,触发change时就会同时执行N次AJAX请求,自然按2的幂次增长。
  • 逻辑冗余:你绑定的click和change都是作用在同一个复选框上的,两个事件本身就会在点击复选框时先后触发,完全没必要嵌套绑定。
修复方案

直接把change事件的绑定逻辑从click回调里挪出来,放在$(document).ready下直接执行即可,修复后的JS代码如下:

$(document).ready(function() {
  $("input:checkbox").change(function() {
    if ($(this).is(":checked")) {
      console.log('checked ' + $(this).val());
      $.ajax({
        url: "insert.php",
        method: "POST",
        data: {
          test1: $(this).val()
        },
        success: function(data) {
          $('#result').html(data);
        }
      });
    }
  });
});

如果业务场景确实需要在某些操作后才绑定事件,可以在绑定前先调用off清除之前的绑定,避免重复:

// 仅在确实需要动态绑定的场景使用
$("input:checkbox").off('change').change(function() {
  // 回调逻辑
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:24:02