【问题标题】:unable to fetch data from DB using ajax无法使用 ajax 从数据库中获取数据
【发布时间】:2017-05-20 07:06:30
【问题描述】:

我正在开发一个 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>';
                }
            }
        ]

    }
      );


}

我无法弄清楚我到底做错了什么。请有人在这方面提供帮助。

【问题讨论】:

  • 响应 Ajax 请求得到了什么?(检查检查->网络->chrome 上的 XHR)。
  • 给出:状态码 200 ok
  • 并且找不到控制器的 GetCompanies 方法。这意味着它没有获取我的控制器 GET 代码。我现在应该在这里做什么?
  • 第一个 ajax 应该有回调函数 - 在你第一个 Ajax 成功中: function(result) { if(result != null ) // 调用函数 fetchCompanyTableList(); }
  • 不需要第一次ajax调用。只需在数据表中使用 ajax 调用。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您在操作中使用[HttpGet],表示您的操作中只允许http GET 请求。 但是您的 ajax 呼叫您使用 POST 请求。那是不接受你的行动。因此,如果您需要 GET 请求,请将 POST 更改为 GET 或将 [HttpGet] 更改为 [HttpPost] 以获取 POST 请求。

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

    【讨论】:

    • 通过将 TYPE 更改为 GET,它会在数据集中获取数据,但不会填充到表中。你能告诉我为什么它没有显示在表格中,以便我标记你的答案
    猜你喜欢
    • 1970-01-01
    • 2012-12-14
    • 2019-11-26
    • 2023-03-27
    • 1970-01-01
    • 2020-02-08
    • 2017-09-21
    相关资源
    最近更新 更多