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

追加数据到表格后项目中餐食信息不显示问题排查

问题排查与修复

接口测试能正常返回数据,说明后端逻辑没问题,问题出在前端视图代码上,具体问题和修复方案如下:

直接导致不显示的错误

你拼接表格行HTML的时候,Edit、Delete两列的单元格闭合标签写错了,漏了闭合标签开头的<,把</td>写成了/td>,生成的HTML结构非法,浏览器解析的时候直接判定整行无效不渲染,最后就只剩表头。
错误代码片段:

res += '<td> Edit/td>';
res += '<td> Delete/td>';

把这两行的/td>改成</td>就能解决核心问题。

建议补充的优化(避免后续踩坑)

  • 给AJAX请求加error回调,请求出错、JSON解析失败的时候直接在浏览器控制台打报错信息,不用瞎猜问题在哪
  • 给WebAPI接口加明确路由,避免两个Get方法后续出现路由匹配冲突
  • DbContext用完记得释放,不然跑久了会占满数据库连接池
  • 调前端问题先按F12开开发者工具,控制台看JS报错、网络面板看接口返回,能快速定位绝大多数问题

修正后的代码参考

1. 视图JS部分(改完直接用就行)

@section scripts {
    <script>
        function showMeals() {
            $.ajax({
                url: "/api/webcms",
                method: "GET",
                dataType: "json",
                success: function (data) {
                    $.each(data, function (k, v) {
                        var res = '<tr>';
                        res += '<td>' + v.MealId + '</td>';
                        res += '<td>' + v.MealName + '</td>';
                        res += '<td>' + v.MealPrice + '</td>';
                        res += '<td>' + v.MealImg + '</td>';
                        res += '<td>' + v.Cat + '</td>';
                        res += '<td>Edit</td>';
                        res += '<td>Delete</td>';
                        res += '</tr>';
                       
                        $("#meals_tbl").append(res);
                    });
                },
                error: function(xhr, status, error) {
                    console.log("请求失败:", error);
                    console.log("接口返回内容:", xhr.responseText);
                }
            });
        }

        $(document).ready(function () {
            showMeals();
        });
    </script>
}

2. WebAPI控制器优化(可选,解决路由隐患)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using Delivary.Models;
using System.Web.Http;

namespace Delivary.Controllers.api
{
    public class webcmsController : ApiController
    {
        private ApplicationDbContext db = new ApplicationDbContext();

        [HttpGet]
        [Route("api/webcms/meals")]
        public IEnumerable<Meal> GetMeals()
        {
            return db.MealTable.ToList();
        }

        [HttpGet]
        [Route("api/webcms/meals/{id}")]
        public Meal GetoneMeal(int id)
        {
            return db.MealTable.SingleOrDefault(x => x.MealId == id);
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }
    }
}

如果用了上面的特性路由,把AJAX请求里的url改成/api/webcms/meals就行。

改完刷新页面,餐食数据就会正常加载到表格里。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:57:16