无法使用ajax从数据库中获取数据

时间:2017-05-20 07:06:31

标签: jquery asp.net ajax asp.net-mvc

我正在开发一个ASP.Net MVC应用程序。我想使用ajax从数据库中获取数据。它不会在网页中加载数据,并且控制台窗口也没有错误,在visual studio中也不例外。 以下是我的控制器代码。

    [HttpGet]
    public JsonResult GetCompanies()
    {
        try
        {
            IEnumerable<Company> company = _companyService.GetCompanies().ToList();
            IEnumerable<CompanyListViewModel> viewModelListCompanies = Mapper.DynamicMap<IEnumerable<Company>, IEnumerable<CompanyListViewModel>>(company);


            return new JsonSuccessResult(viewModelListCompanies);
            //return Json(accountTypes, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            Response.StatusCode = (int)ResponseCode.UnprocessableEntity;
            return new JsonErrorResult(ex.ToString());
        }
    }

这是我视图中的代码。

<div class="row">

    <div class="col-md-9">

        <div class="block">
            <div class="header">
                <h2>Sortable table</h2>
            </div>
            <div class="content">
                <table cellpadding="0" cellspacing="0" width="100%" class="table table-bordered table-striped sortable" id="myDbTable">
                    <thead>
                        <tr>
                          <th data-hide width="20%">ID</th>
                            <th data-hide width="20%">Name</th>
                            <th data-hide width="20%">E-mail</th>
                            <th data-hide width="20%">Phone</th>
                        </tr>
                    </thead>
                    <tbody>

                    </tbody>
                </table>
            </div>
        </div>

    </div>

</div>

   }
     @section Scripts{
    <script>

    var DataColumnsCount = 4;

    //***Start Fatching Data for datatable *** start //

    $.ajax({
        type: 'POST',
        url: @Url.Action("GetCompanies","Company"),
        dataType: 'json',
        data: "{}",
        success: fetchCompanyTableList});
function fetchCompanyTableList() {

    $('#myDbTable').DataTable({
        ajax: {
            url: @Url.Action("GetCompanies", "Company"),
            type: "GET",
            dataType: "json",
            dataSrc: 'DataSet',

        },
        "columns": [
                {"data" : "Id"},
                { "data": "Name" },
               { "data": "Email" },
                { "data": "Owner" }


        ],
        "aoColumnDefs": [
            {
                "aTargets": [DataColumnsCount],
                "mData": null,
                "bSortable": false,
                "mRender": function (data, type, fullRow) {
                    return '<th width="20%"><a href="#">Details</a></th>';
                }
            }
        ]

    }
      );


}

我无法弄清楚我到底做错了什么。请有人帮忙。

2 个答案:

答案 0 :(得分:2)

对于数据表您需要将TYPE更改为[HttpPost]&amp;在你的ajax改变类型&#34; POST&#34; 作为开发人员,您需要为控制器添加断点。检查它是否被击中。 您也可以使用console.log()/在浏览器开发者工具中查看结果

答案 1 :(得分:1)

您在操作中使用[HttpGet],表示仅在您的操作中允许http GET请求。 但是,您使用ajax请求POST来电。你的行动不接受。如果您需要POST请求,请将GET更改为GET,或将[HttpGet] [HttpPost]更改为POST

您不需要多次ajax调用。因此需要更改您的ajax调用,因为jquery数据表有自己的ajax调用来进行数据加载。你可以将你的答案thisthis链接起来。或者,您可以关注this YouTube视频。