首页 > 解决方案 > AJAX 调用后 DataTables 不会运行渲染函数

问题描述

我正在使用 AJAX 将数据放入我的 Datatables 表中。这是我以前做过的事情,效果很好,但是这次我遇到了问题。

当我运行InitializeDatatablesJS 函数时,它成功生成表并运行到达GetDataForTable控制器动作的 AJAX。但是,一旦控制器操作返回,就不会再发生任何事情了。应该发生的是"render"部分中的函数应该运行但它没有。也没有给出错误。

据我所知,这个设置与我在另一个项目中的设置非常相似,但我找不到哪里出错了。一个区别是,上一个项目是在 ASP.NET Core 3.0 上,而这个是在 2.2 上。

HTML表格设置:

<table id="myTable">
    <thead>
        <tr>
             <th>
                  Important Stuff
             </th>
        </tr>
    </thead>
//Datatables automatically generates the rest of HTML needed
</table>

在页面加载时运行的 JS 函数:

function InitializeDatatables() {
    $('#myTable').DataTable({
        "lengthChange": false,
        "ajax": {
            "url": "/Home/GetDataForTable", //controller action runs and returns
            "type": "GET",
            error: function (error) {
                var test = error; //no error is given
            }
        },
        "columns": [
            { "data": null } //"data: null" to access all JSON data in "render" function(data).
        ],
        "columnDefs": [
            {
                "targets": 0,
                "render": function (data) { //function never runs
                    var test = data;
                    return '<span>test</span>';
                }
            },
            {"className": "testClass", "targets": 0} //class name is successfully added
        ]
    });
}

控制器动作:

[HttpGet]
public JsonResult GetDataForTable()
{
    MyModel model = new MyModel();
    model.ImportantStuff = _myProcessingService.GetDataFromDB();
    return Json(new { data = model });
}

标签: javascriptajaxasp.net-mvcasp.net-coredatatables

解决方案


推荐阅读