C# jQuery Datatables json AJAX帮助pls“;表“中无可用数据”;

C# jQuery Datatables json AJAX帮助pls“;表“中无可用数据”;,c#,jquery,ajax,asp.net-mvc,datatables,C#,Jquery,Ajax,Asp.net Mvc,Datatables,我有一个在$(document).ready函数中生成的表。我还使用jquerydatatables插件。由于某些原因,当页面加载时,表加载,但第一行显示: “表中无可用数据” 这是我的控制器: public string Lowx() { var query = db.Infoes. Include(x => x.Profile). Include(x => x.Car).

我有一个在
$(document).ready
函数中生成的表。我还使用jquerydatatables插件。由于某些原因,当页面加载时,表加载,但第一行显示:

“表中无可用数据”

这是我的控制器:

  public string Lowx()
        {
            var query = db.Infoes.
                Include(x => x.Profile).
                Include(x => x.Car).

                ToList();

return JsonConvert.SerializeObject(query.ToList());
这是我的Ajax功能:

 $(document).ready(function (data) {

          $('#cars').DataTable({


              ajax: {
                  url: '@Url.Action("lowx")',
                  type: 'POST',
                  dataType: 'json',
                  dataSrc: ""

              },
              columns: [
                  { data: "FirstName", name: "FirstName" },
                  { data: "LastName", name: "LastName" },
                  { data: "MiddleName", name: "MiddleName" },
                  { data: "BirthDate", name: "BirthDate" },
                  { data: "CarName", name: "CarName" },
                  { data: "CarNumber", name: "CarNumber" },

              ],




    });
});
数据表写入:

看一看。它需要一个包含数据的数组属性“data”的对象,而不是一个直数组

而且

(a) 控制器操作正在返回字符串。您应该返回一个
JsonResult
,它为您进行序列化(并适当地设置mime类型等)

理想情况下,您应该只获取所需的数据,而不是检索表中的所有列。这是对您的模式的完整猜测,但是

public JsonResult Lowx()
{
    var query = db.Infoes.
        Select(x => new()
        {
            FirstName = x.Profile.FirstName,
            LastName = x.Profile.LastName,
            MiddleName = x.Profile.MiddleName,
            BirthDate = x.Profile.BirthDate,
            CarName = x.Car.CarName,
            CarNumber = x.Car.CarNumber
        });

    return Json(new { data = query });
}
(b) 为什么要使用POST请求检索数据?

请尝试以下代码:

javascript:

  $('#cars').dataTable({
    responsive: true,
    "searching": true,
    "scrollCollapse": true,
    dom: 'Blrtip',
    "processing": true,
    "serverSide": true,
    "ajax": $('#cars').data('source'),
    "pagingType": "simple_numbers",
     "columns": [
                  { data: "FirstName"},
                  { data: "LastName"},
                  { data: "MiddleName"},
                  { data: "BirthDate"},
                  { data: "CarName",
                  { data: "CarNumber"},

              ], 
  });
html代码:

<table id="cars" data-source="lowx">
          <thead>
            <tr role="row">
              <th>first name</th>
              .....
              <th>car number</th>
            </tr>
          </thead>
          <tbody> 
          </tbody>
      </table>

名字
.....
车号

有关详细信息,请访问此url:


默认http动词是GET,但Ajax正在发送POST,您是否尝试添加
[HttpPost]
装饰器?您能在控制台中看到任何错误吗?@derloopkat控制台中出现0错误这可能有帮助:
<table id="cars" data-source="lowx">
          <thead>
            <tr role="row">
              <th>first name</th>
              .....
              <th>car number</th>
            </tr>
          </thead>
          <tbody> 
          </tbody>
      </table>
  var table = $('#example').DataTable( {
        ajax: "data.json"
    } );

    table.ajax.url( 'newData.json' ).load();