无效的 JSON 响应 Jquery 数据表

Posted

技术标签:

【中文标题】无效的 JSON 响应 Jquery 数据表【英文标题】:Invalid JSON response Jquery Datatables 【发布时间】:2021-11-09 21:08:18 【问题描述】:

我正在尝试使用数据表,但是当应该绘制表格时,响应是:

DataTables 警告:表 id=tablaSucursales - 请求第 0 行第 0 列的未知参数“0”

它出现了两次

我的对象响应是这样的


    Mensaje: "OK"
    "Data": [
        
            "Id_Sucursal": 510001,
            "Nombre_Sucursal": "Pedestal Prueba",
            "Estado": "CDMX",
            "Activa": 0
        ,
        
            "Id_Sucursal": 510010,
            "Nombre_Sucursal": "Tableta de Pruebas",
            "Estado": "CDMX",
            "Activa": 0
        ,
    ]

我的ajax请求和datatables初始化是这样的

$.ajax(
        url: './Archivos_Ajax.asp',
        method: "POST",
        dataType: 'json',
        data:  accion: "ObtenerSucursales",
                PageNumber: 1,
                RowsOfPage: 20 ,
        success: function (response) 
      
            $('#tablaSucursales').DataTable( 
                // "processing": true,
                // "serverSide": true,
                data: response.Data,
                // search: 
                //  return: true
                // ,
                columns: [
                    title: "Id_Sucursal" ,
                    title: "Nombre_Sucursal",
                    title: "Estado",
                    title: "Activa"
                ]
             );

        
    );

我已经使用 https://jsonlint.com/ 验证了 Data 对象

任何帮助都会很棒

【问题讨论】:

检查文档:您使用的是columns.title。您需要使用columns.data。如果您自己找不到这些引用,那么首先查看examples - 特别是Ajax examples - 以及使用JSON 数据对象的那个,与您的数据源相同。 还可以在数组中使用 data 和小写“d”而不是大写。 【参考方案1】:

根据您提供的数据格式,请查看我对您的列定义/初始化所做的更改。应该是这样的:

$.ajax(
        url: './Archivos_Ajax.asp',
        method: "POST",
        dataType: 'json',
        data:  accion: "ObtenerSucursales",
                PageNumber: 1,
                RowsOfPage: 20 ,
        success: function (response) 
      
            $('#tablaSucursales').DataTable( 
                // "processing": true,
                // "serverSide": true,
                data: response.Data,
                // search: 
                //  return: true
                // ,
                columns: [
                    "data" : "Data.Id_Sucursal" ,
                    "data" : "Data.Nombre_Sucursal",
                    "data" : "Data.Estado",
                    "data" : "Data.Activa"
                ]
             );

        
    );

【讨论】:

【参考方案2】:

我为你做了这个例子: https://jsfiddle.net/bogatyr77/g7ntd8rk/12/ jQuery:

$(document).ready(function() 
  var data = [
      "Id_Sucursal": 510001,
      "Nombre_Sucursal": "Pedestal Prueba",
      "Estado": "CDMX",
      "Activa": 0
    ,
    
      "Id_Sucursal": 510010,
      "Nombre_Sucursal": "Tableta de Pruebas",
      "Estado": "CDMX",
      "Activa": 0
    ,
  ];

  var json = data;
  $.ajax(
    url: '/echo/json/',
    dataType: 'json',
    type: 'POST',
    data: 
      data: json
    ,
    success: function(data) 
      $('#lista_proiecte').DataTable(
        "data": json,
        "columns": [
            "data": "Id_Sucursal"
          ,
          
            "data": "Nombre_Sucursal"
          ,
          
            "data": "Estado"
          ,
          
            "data": "Activa"
          
        ]
      );
    
  );
)

html

<!--css plugins for table-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap5.min.css">


<!--js plugins for table-->
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap5.min.js"></script>
<section class="container shadow">
  <div class="table-responsive">
    <table id="lista_proiecte" class="table table-striped table-hover">
      <thead>
        <tr>
          <th>Id_Sucursal</th>
          <th>Nombre_Sucursal</th>
          <th>Estado</th>
          <th>Activa</th>
        </tr>
      </thead>
    </table>
  </div>
</section>

【讨论】:

虽然这在您的示例中有效,但您创建的数据变量并未模仿 OP 从 AJAX 请求接收的一个,因此在 OP 情况下,它将不起作用。有响应,然后是“Data”中的嵌套对象数组,因此需要调用 Data.objKey 来实际初始化列数据;)

以上是关于无效的 JSON 响应 Jquery 数据表的主要内容,如果未能解决你的问题,请参考以下文章

jquery Datatable 无效 JSON 响应 1 ,数据被检查为有效 json

无效的 JSON 响应 Laravel 数据表

数据表抛出无效的 JSON 响应

Laravel 数据表无效的 JSON 响应

无效的 JSON 响应:引导数据表

当我从数据库加载法语文本时,数据表返回无效的 json 响应