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

HTML类卡片数据渲染异常求助:Ajax加载SQL数据未显示

问题排查与修复方案

嘿,作为前端新手遇到这种问题很正常,我帮你梳理下问题所在和解决办法:


1. 核心问题:数据未显示的原因

你在Ajax里只给.card元素添加了data-room-id和data-room-name这两个自定义属性,但没有把房间号(比如100、101)作为文本内容插入到card标签内部,所以页面上只会渲染出空的卡片容器,看不到实际数据。

2. 次要问题:HTML结构嵌套错误

原HTML中#roomList本身就是一个.card元素,但你的Ajax代码却往这个卡片里又嵌套了.row > .column > .card的结构,这会导致卡片套卡片的混乱布局,完全不符合你最初想做“一行多卡片”的需求。


修正后的完整代码

第一步:调整HTML结构

把#roomList改成承载卡片的.row容器,这样Ajax加载的卡片可以直接追加到这里:

<style>
  .column { float: left; width: 25%; padding: 0 10px; }
  .row {margin: 0 -5px;}
  .card { box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); padding: 16px; text-align: center; background-color: #f1f1f1; }
</style>

<div class="col-md-8">
  <!-- 把roomList改成row容器,用来承载多个column卡片 -->
  <div id="roomList" class="row">
  </div>
</div>

第二步:修正Ajax代码

用ES6模板字符串简化HTML拼接,同时把房间号内容插入到card内部,还要修正结构避免嵌套错误:

$.ajax({
  url: '/HouseKeeping/OutOfOrderTXN/RoomList',
  dataType: 'json',
  method: 'GET',
  success: function (data) {
    $.each(data, function (index, eachRoomList) {
      // 用模板字符串拼接HTML,清晰不易出错,同时加入房间号文本
      $('#roomList').append(`
        <div class="column">
          <div class="card" 
               data-room-id="${eachRoomList.Id}" 
               data-room-name="${eachRoomList.RoomName}">
            ${eachRoomList.RoomName} <!-- 这里就是显示的房间号 -->
          </div>
        </div>
      `);
    });
  },
  error: function (error) {
    // 建议添加错误日志,方便排查请求失败的情况
    console.error('加载房间列表出错啦:', error);
  }
});

额外小提示

  • 用模板字符串(反引号`)拼接HTML比传统的字符串加号拼接更清晰,不容易出现引号嵌套错误
  • 可以给卡片添加hover效果增强交互,比如.card:hover { transform: translateY(-5px); transition: 0.3s; }
  • 如果需要响应式布局,在小屏幕上让卡片占满宽度,可以加媒体查询:
    @media screen and (max-width: 768px) {
      .column { width: 100%; margin-bottom: 10px; }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:22:51