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

ASP.NET Core MVC中jQuery Ajax模态框无法加载数据弹出问题

解决jQuery Ajax调用ASP.NET Core控制器获取数据并在模态框展示的问题

问题根源

你的控制器返回的是Study对象的数组集合,但前端success回调里直接尝试访问res.Id和res.Name——这是错误的,因为res是数组而非单个Study对象。另外,Ajax请求未明确指定响应数据类型,可能导致返回的JSON未被正确解析为JavaScript对象。

分步解决方案

1. 调整模态框结构,添加表格容器

先确保模态框的body区域有用于展示数据的表格:

<div class="modal-body">
  <table id="studiesTable" class="table table-striped">
    <thead>
      <tr>
        <th>ID</th>
        <th>名称</th>
      </tr>
    </thead>
    <tbody></tbody>
  </table>
</div>

2. 修正前端Ajax逻辑,遍历数组生成表格

修改test函数,处理数组数据并动态生成表格行:

test = (url, id) => { 
    $.ajax({
        type: 'GET',
        url: url,
        data: { 'id': id },
        dataType: 'json', // 明确指定响应为JSON格式,确保自动解析
        success: function (res) {
            console.log(res);
            const tableBody = $("#studiesTable tbody");
            tableBody.empty(); // 清空旧数据
            
            // 遍历数组,生成表格行
            res.forEach(study => {
                const row = `<tr>
                    <td>${study.Id}</td>
                    <td>${study.Name}</td>
                </tr>`;
                tableBody.append(row);
            });
            
            $("#formModal").find(".modal-title").html("研究列表");
            $("#formModal").modal('show');
        },
        error: function (response) {
            console.error(response);
            alert("加载数据失败");
        }
    });
};

3. 优化控制器查询(可选,提升性能)

原控制器的子查询使用ToList()会先加载所有匹配ID到内存,改为Any()可让数据库直接执行过滤,性能更优:

[HttpGet]
public async Task<IActionResult> GetStudies(int id)
{
    var results = await _context.Studies
        .Where(t => !_context.StudyNodes
            .Any(sn => sn.NodeId == id && sn.StudyId == t.Id))
        .Select(t => new Study
        {
            Id = t.Id,
            Name = t.Name
        })
        .ToListAsync();

    return Ok(results);
}

4. 验证请求与响应

打开浏览器开发者工具(F12):

  • 切换到Network标签,触发请求后查看GetStudies的响应是否为合法JSON数组
  • 若响应正常但前端未解析,dataType: 'json'会强制jQuery解析为对象;若有错误,Console标签会显示详细报错信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:20:38