DataTables warning: table id=users - Ajax error. when passing parameter to it using jquery

Viewed 264

I am getting this error when passing parameter to the datatable jQuery. If I changed my controller to this public ActionResult GetUsers(int divisionId) with out parameter it work fine but I need to pass the parameter.

DataTables warning: table id=users - Ajax error. For more information about this error, please see http://datatables.net/tn/7 here is my view

      <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>

Controller

    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);
    }

and the script:

$(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]) {

                    }
                }
            });

        });
  });
1 Answers

I add attribute route before ActionResult and its now working.

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