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

在Index.cshtml中调用Site.js内Ajax函数报错求助

问题分析与解决方案

核心问题排查

你的代码存在4个关键错误,导致函数无法调用或Ajax请求失败:

  1. 函数作用域限制:Site.js中用$(function updateTable() { ... })定义函数,会把updateTable封装在jQuery就绪函数的局部作用域里,外部(Index.cshtml)无法访问。
  2. MVC路由路径错误:ASP.NET MVC的控制器路由不需要加Controller后缀,/HomeController/SendDataToTable应该改为/Home/SendDataToTable。
  3. HTML转义字符错误:.js文件中不需要使用HTML转义(如<、"),直接写正常的HTML标签即可,否则jQuery无法正确创建DOM元素。
  4. 缺少错误回调:没有Ajax请求失败的处理逻辑,无法排查请求失败原因。

修正后的代码

1. Site.js 修正版

// 定义全局可访问的updateTable函数
function updateTable() {
    $.ajax({
        url: '/Home/SendDataToTable', // 修正路由路径
        dataType: 'JSON',
        type: 'GET',
        success: function (data) {
            var tbody = $('#mytable tbody');
            tbody.empty();
            $.each(data, function (index, a) {
                // 使用正常HTML标签,去掉转义字符
                var row = $('<tr>');
                row.append($('<td class="col-md-1">').text(a.Id));
                row.append($('<td class="col-md-1">').text(a.name));
                row.append($('<td class="col-md-1">').text(a.address));
                
                tbody.append(row);
            });
        },
        // 添加错误回调,便于排查问题
        error: function(xhr, status, error) {
            console.error('请求失败:', status, error);
            console.error('响应内容:', xhr.responseText);
        }
    });
}

// 可选:页面加载完成后自动执行一次
$(function() {
    updateTable();
});

2. Index.cshtml 修正版

@section Scripts{
    <!-- 确保先引入Site.js,路径根据实际项目结构调整 -->
    <script src="~/js/Site.js"></script>
    <script>
        $(function () {
            updateTable(); // 初始化表格数据
            setInterval(function () {
                updateTable();
            }, 5000); // 每5秒刷新一次表格
        });
    </script>
}

3. 控制器方法补充(HomeController)

确保SendDataToTable方法是公开的,并且返回正确的Json格式:

// ASP.NET MVC 版本
public JsonResult SendDataToTable()
{
    // 示例数据,替换为你的实际数据源
    var data = new List<YourModel>
    {
        new YourModel { Id = 1, name = "张三", address = "北京市朝阳区" },
        new YourModel { Id = 2, name = "李四", address = "上海市浦东新区" }
    };
    // 允许GET请求访问Json结果
    return Json(data, JsonRequestBehavior.AllowGet);
}

// ASP.NET Core 版本
public IActionResult SendDataToTable()
{
    var data = new List<YourModel>
    {
        new YourModel { Id = 1, name = "张三", address = "北京市朝阳区" },
        new YourModel { Id = 2, name = "李四", address = "上海市浦东新区" }
    };
    return Json(data); // Core默认允许GET请求
}

额外排查步骤

  1. 按F12打开浏览器控制台,查看是否有函数未定义、404路由错误或数据格式异常的提示。
  2. 确认Site.js的引入路径正确,可通过控制台的"网络"标签查看是否成功加载该文件。
  3. 直接在浏览器地址栏访问/Home/SendDataToTable,确认能返回合法的JSON数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:25:21