You need to enable JavaScript to run this app. jQuery Ajax从Django获取数据成功,为何无法更新select下拉选项?
优惠活动
大模型
产品
解决方案
定价
更多

jQuery Ajax从Django获取数据成功,为何无法更新select下拉选项?

下拉选项无更新问题修正

定位到的3个导致功能失效的具体问题

  • 键名不匹配导致循环未执行
    后端返回的JSON顶层键是data,前端代码中遍历的是不存在的data.rows,循环逻辑完全没有触发,自然不会生成新选项。
  • 字段映射不匹配导致选项内容为空
    后端返回的单条Post数据包含id、post_heading、post_text三个字段,代码中引用的item.label、item.value在返回结构中不存在,就算循环能触发,生成的选项也是无值无文本的空节点。
  • DOM操作目标错误
    原代码中是向已存在的<option>节点内部追加新的<option>节点,逻辑完全错位,正确操作目标是id为car_maker的<select>元素本身。

修正后的前端代码

把success回调部分替换为如下内容即可正常运行:

success: function (data) {
    console.log(data);
    // 清空下拉框原有全部选项
    $("#car_maker").empty();
    // 匹配后端返回的顶层data数组进行遍历
    $.each(data.data, function (index, item) {
        // 映射后端字段到选项属性:value用文章id,显示文本用文章标题
        const newOption = $('<option>')
            .text(item.post_heading)
            .attr('value', item.id);
        // 将新建的选项追加到下拉框容器中
        $("#car_maker").append(newOption);
    })
}

额外注意点

  • 原代码里$("#car_maker option").remove()的写法虽然能实现清空效果,但直接用$("#car_maker").empty()更简洁,性能也更好
  • 当前使用的jQuery 1.12版本完全兼容上述写法,无需调整依赖版本
  • 调试时可以在append节点前打印newOption,确认选项的value和文本取值正确,避免字段映射错位

内容的提问来源于stack exchange,提问作者Madukkur-com Madukkur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 04:27:03