You need to enable JavaScript to run this app. Django模板循环渲染select标签ID固定不变,AJAX提交参数异常如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Django模板循环渲染select标签ID固定不变,AJAX提交参数异常如何解决

问题根因

你的jQuery代码中ID取值逻辑存在错误:使用类选择器$(".status_select")会匹配页面上所有符合条件的下拉框元素,调用.attr("id")时默认只会返回第一个匹配到的元素的ID,因此无论你操作哪个下拉框,拿到的都是页面第一个下拉框的固定ID(你的场景里就是ID=4)。

修复方案

将change事件回调中的ID取值逻辑修改为获取当前触发事件的元素的ID即可:

// 原错误代码
id = $(".status_select").attr("id");
// 替换为以下任意一种正确写法
id = $(this).attr("id"); // jQuery写法
id = this.id; // 原生JS写法,性能更优

修正后的完整jQuery代码如下:

$("body").on("change", ".status_select", function (e) {
    e.stopPropagation();
    const selectedVal = $(this).val();
    const id = this.id;
    console.log(selectedVal, id);
    $.ajax({
      url: "/users/status_change/",
      type: "GET",
      data: {
        id: id,
        selected_val: selectedVal,
      },
      success: function (data) {
        console.log(data);
      },
      error: function (error) {
        console.log(error);
      },
    });
  });

注:原代码中GET请求设置contentType: "application/json"属于无效配置,GET请求的参数会自动拼接在URL后,不需要该配置,因此可以直接删除。

排查验证方法
  • 打开浏览器开发者工具的元素面板,检查所有下拉框的id属性,确认模板渲染的ID确实是随用户动态变化的,排除模板渲染错误
  • 在change事件回调中打印this,确认触发事件的元素和你当前操作的下拉框一致
  • 触发下拉框修改,查看控制台打印的ID是否和操作的下拉框ID匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 23:06:02