数据表警告:表 id=users - Ajax 错误使用 jquery 将参数传递给它时

问题描述

将参数传递给数据表 jQuery 时出现此错误。 如果我把我的控制器改成这个 public ActionResult GetUsers(int divisionId) 没有参数它工作正常,但我需要传递参数。

DataTables 警告:table id=users - Ajax 错误。有关此错误的详细信息,请参阅 http://datatables.net/tn/7 这是我的观点

      <div>
            <div class="row row-xs align-items-center mg-b-20">
                <div class="col-md-4">
                    <label class="form-label mg-b-0">Division</label>

                </div>
                <div class="col-md-8 mg-t-5 mg-md-t-0">

                    <select id="selection" class="form-control select-group">
                        <option value="0">-- Select User --</option>
                        @foreach (var user in Model.divisions)
                        {
                            <option value="@user.DivisionID">@(user.DivisionName)</option>
                        }
                    </select>
                </div>
            </div>

            <div class="table-responsive">
                <table id="users" class="table table-striped text-md-Nowrap">
                    <thead>
                        <tr>
                            <th>User ID</th>
                            <th>Employee ID</th>
                            <th>Username</th>
                            <th>Email</th>
                            <th>Action</th>
                        </tr>
                    </thead>
                </table>
            </div>

        </div>

控制器

    public ActionResult GetUsers(int divisionId)
    {
        int pageSize = 0,skip = 0;
        string orderBy = "",draw = "",search = "";

        Utility.SetDataTableValues(Request,out draw,out orderBy,out search,out pageSize,out skip);

        int recordsTotal = 0;
        List<UserPartial> usersList = new List<UserPartial>();
       usersList = UserBL.GetUsersByDivision(pageSize,skip,out recordsTotal,2,search);
        return Json(new { draw = draw,recordsFiltered = recordsTotal,recordsTotal = recordsTotal,data = usersList },JsonRequestBehavior.AllowGet);
    }

和脚本:

$(function () {

        $("#selection").on('change',function () {
            var table = $('#users').DataTable();


            table.destroy();
            $("#users").show();

            var divisionId = $("#selection option:selected").val();
            var url = '/AssignHod/GetUsers/';
            table = $('#users').DataTable({
                "processing": true,"serverSide": true,"filter": true,"orderMulti": false,"destroy": true,"ordering": true,"ajax": {
                    "url": '@Url.Action("GetUsers","AssignHod")',"type": "POST","datatype": "json"
                },"columns":
                    [
                        {
                            "data": "UserID"
                        },{
                            "data": "EmployeeId"
                        },{
                            "data": "Username"
                        },{
                            "data": "Email"
                        },{
                            "render": function (data,type,row,Meta) {
                                var html = "";
                                //if (row.canEdit) {
                                if (row.isHOD) {
                                    html += '<a title="Mark as User" href="/AssignHoD/deactivate/' + row.UserID + '" class="btn btn-sm waves-effect waves-light btn-outline-info"><i class="fa fa-toggle-off"></i></a>';
                                }
                                else if (!row.isHOD) {
                                    html += '<a title="Mark as H.O.D" href="/AssignHoD/activate/' + row.UserID + '" class="btn btn-sm waves-effect waves-light btn-outline-info"><i class="fa fa-toggle-on"></i></a>';
                                }
                                return html;
                            }
                        }
                    ],"fnRowCallback": function (nRow,aData,idisplayIndex,idisplayIndexFull) {
                    if (aData[0]) {

                    }
                }
            });

        });
  });

解决方法

我在 ActionResult 之前添加了属性路由,现在可以正常工作了。

[Route("AssignHoD/GetUsers/{Id}")]
public ActionResult GetUsers(int Id)
{
}