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

调用modal('show')报错Uncaught TypeError: modal is not a function求助

报错解决方案

1 报错根因

Uncaught TypeError: $(...).html(...).modal is not a function 报错是因为modal是Bootstrap框架提供的jQuery扩展方法,触发条件如下:

  • 未引入Bootstrap对应的JS文件
  • 引入顺序错误:必须先引入jQuery,再引入Bootstrap JS文件,否则Bootstrap无法将modal方法挂载到jQuery实例上
  • 重复引入jQuery:后引入的jQuery会覆盖之前已挂载Bootstrap方法的jQuery实例,导致方法丢失
  • Bootstrap版本与jQuery版本不兼容

2 第一步:修正资源引入顺序

修改grid.cshtml文件,按如下顺序引入资源,注意需要先引入Bootstrap依赖的基础文件再加载自定义JS:

<!-- 先引入jQuery -->
<script src="@Url.Content("~/js/jquery.min.js")" type="text/javascript"></script>
<!-- 引入Bootstrap CSS -->
<link rel="stylesheet" href="@Url.Content("~/css/bootstrap.min.css")">
<!-- 引入Bootstrap JS -->
<script src="@Url.Content("~/js/bootstrap.min.js")" type="text/javascript"></script>
<!-- 最后引入自定义Grid.js -->
<script src="@Url.Content("~/js/Grid.js")" type="text/javascript"></script>
<div id="login_for_review" class="modal fade" role="dialog"></div>

3 第二步:修正弹窗逻辑实现ID水平展示

你当前代码直接将返回的JSON数组传入html()方法属于逻辑错误,需要先将ID数组拼接为水平展示的HTML结构,同时补全Bootstrap Modal要求的DOM结构才能正常渲染弹窗。
修改grid.js中的getSiteId方法:

var getSiteId = function () {
    $.ajax({
        type: 'GET',
        url: "", // 填写你的后端接口地址
        dataType: 'json',
        success: function (idList) {
            // 拼接Modal完整结构 + 水平排列的ID列表
            let modalContent = `
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title">ID列表</h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                    </div>
                    <div class="modal-body" style="display: flex; gap: 12px; flex-wrap: wrap;">
            `
            // 遍历ID数组生成水平展示的元素
            idList.forEach(id => {
                modalContent += `<span class="badge bg-primary fs-6">${id}</span>`
            })
            modalContent += `
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">关闭</button>
                    </div>
                </div>
            </div>
            `
            // 渲染DOM并触发弹窗显示
            $('#login_for_review').html(modalContent).modal('show');
            console.log(idList);
        }
    });
};

补充说明

  • 上述代码用flex布局实现ID水平排列,支持自动换行,也可以根据需求调整样式
  • 如果使用Bootstrap 3版本,只需调整对应的类名即可,核心逻辑不变
  • 如果确认资源引入顺序正确仍报错,可排查页面是否存在重复引入jQuery的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:12:01