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

Javascript点击事件未触发,API加载更新模态框数据失败求助

问题:点击按钮无法触发API请求加载数据到UpdateModal

我需要通过API拉取数据到UpdateModal中,但这段之前正常运行的代码现在突然失效了——相同代码在其他视图中可以正常触发,唯独在当前视图里完全没反应。

$("tbody").on('click', '#update', function () {
    $("#UpdateModal").modal("show");
    var id = $(this).data("id");
    console.log(id);
    $.ajax({
        type: 'Get',
        url: "/Users/GetUser?id=" + id,
        data: {
            "cusid": id
        },
        success: function (response) {
            console.log(response);
            console.log(response.data.userName);
            var departments = @Html.Raw(Json.Serialize(@ViewBag.departments));
            var duties = @Html.Raw(Json.Serialize(@ViewBag.duties));
            var roles = @Html.Raw(Json.Serialize(@ViewBag.roles));
            $('#UpdateModal #Id').attr('value', response.data.id);
            $('#UpdateModal #UserName').attr('value', response.data.userName);
            $('#UpdateModal #FirstName').attr('value', response.data.firstName);
            $('#UpdateModal #LastName').attr('value', response.data.lastName);
            $('#UpdateModal #Password').attr('value', response.data.password);


            $("#UpdateModal #DepartmentId option:first-child").prop("selected", "selected").text(response.data.departmentName);


            $("#UpdateModal #DutyId option:first-child").prop("selected", "selected").text(response.data.dutyName);
            $("#UpdateModal #RoleId option:first-child").prop("selected", "selected").text(response.data.roleName);

            if (response.data.isActive) {
                $("#UpdateModal #IsActive #true").prop("selected", "true")
                console.log(response.data.isActive);
            }
            else {
                $("#UpdateModal #IsActive #false").prop("selected", "false")
                console.log(response.data.isActive);
            }

            for (var i = 0; i < departments.length; i++) {
                if (response.data.departmentName == departments[i].departmentName) { $("#UpdateModal #DepartmentId option:first-child").prop("selected", "selected").val(departments[i].id); }
            }

            for (var i = 0; i < duties.length; i++) {
                if (response.data.dutyName == duties[i].dutyName) {
                    $("#UpdateModal #DutyId option:first-child").prop("selected", "selected").val(duties[i].id);
                }
            }

            for (var i = 0; i < roles.length; i++) {
                if (response.data.roleName == roles[i].roleName) { $("#UpdateModal #RoleId option:first-child").prop("selected", "selected").text(response.data.roleName).val(roles[i].id); }
            }
        }
    });
});

排查步骤与解决办法

  • 检查元素选择器与ID冲突:打开浏览器控制台,执行$("#update")查看返回的元素数量,确认当前视图中只有一个目标按钮;执行$("tbody")验证是否能正确选中目标容器。如果存在多个#update,把ID改成类(比如.update),绑定事件时用$("tbody").on('click', '.update', ...)。
  • 确保事件在DOM就绪后绑定:把代码包裹在$(document).ready(function(){ ... })中,避免DOM未渲染完成就执行绑定代码。
  • 查看控制台报错:按F12打开开发者工具,检查Console面板是否有语法错误、jQuery未加载、变量未定义等报错。重点检查页面渲染后的源码中,departments、duties、roles这几个变量是否被正确生成为合法的JS数组。
  • 验证API请求状态:切换到Network面板,点击按钮后查看是否有/Users/GetUser的请求发出。如果没有请求,说明事件绑定失败;如果有请求,检查响应状态码(比如404、500)和返回内容是否符合预期。
  • 检查模态框元素存在性:确认#UpdateModal内的表单元素(如#Id、#UserName)ID拼写正确,且确实存在于DOM中。
  • 动态元素绑定修正:如果tbody或#update按钮是动态加载的,将事件绑定到更上层的静态容器(比如$(document).on('click', 'tbody #update', ...)),确保事件能委托到动态生成的元素上。

内容的提问来源于stack exchange,提问作者Sefa Köse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:01:42