繁体   English   中英

数据表抛出无效的JSON响应

[英]Datatables Throwing Invalid JSON Response

使用SSP提取数据时, Datatables插件遇到问题。 我曾经使用过Custom SSP库,但是返回的是无效JSON响应错误。 这里有人实现了自定义SSP库吗? 我将不得不使用JOINSWHEREGROUP BY ,等我也愿意就如何实现在使用PHP表一个Live过滤功能,如图中的示例表中的建议在这里 因此,如果您对如何在不使用数据表的情况下实现这一点有任何想法,那也可以正常工作。

DataTables警告:表id = example-无效的JSON响应。 有关此错误的更多信息,请参见http://datatables.net/tn/1

初始化

 < script > $(document).ready(function() { $('#example').DataTable({ colReorder: true, "scrollX": true, "processing": true, "serverSide": true, "ajax": "rep_down_data.php" }); }); < /script> 

一个带有JOIN查询的。 自定义SSP库已在此处使用。

 <?php $table = 't_user'; $primaryKey = 'id'; $columns = array( array( 'db' => 'is_phone_verified', 'dt' => 0 ), array( 'db' => 'email', 'dt' => 1 ), array( 'db' => 'mobile_number', 'dt' => 2 ), array( 'db' => 'first_name', 'dt' => 3 ), array( 'db' => 'last_name', 'dt' => 4 ), array( 'db' => 'rep_code', 'dt' => 5 ), ); require('config.php'); $sql_details = array( 'user' => $db_username, 'pass' => $db_password, 'db' => $db_name, 'host' => $db_host ); require('ssp.customized.class.php' ); $joinQuery = "FROM `t_user` AS `u` JOIN `t_user_course` AS `ud` ON (`ud`.`user_id` = `u`.`id`)"; echo json_encode( SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns, $joinQuery ) ); 

这运行良好,并且具有Datatables SSP文件(rep_down_data.php)

 <?php $table = 't_user'; $primaryKey = 'id'; $columns = array( array( 'db' => 'created_at', 'dt' => 0 ), array( 'db' => 'email', 'dt' => 1 ), array( 'db' => 'mobile_number', 'dt' => 2 ), array( 'db' => 'first_name', 'dt' => 3 ), array( 'db' => 'last_name', 'dt' => 4 ), ); require('config.php'); $sql_details = array( 'user' => $db_username, 'pass' => $db_password, 'db' => $db_name, 'host' => $db_host ); require( 'ssp.class.php' ); echo json_encode( SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns ) ); 

表格的HTML代码

 <section id="column-filtering"> <div class="row"> <div class="col-12"> <div class="card"> <div class="card-header"> <h4 class="card-title">Rep Downloads</h4> <a class="heading-elements-toggle"><i class="la la-ellipsis-v font-medium-3"></i></a> <div class="heading-elements"> <ul class="list-inline mb-0"> <li><a data-action="collapse"><i class="ft-minus"></i></a></li> <li><a data-action="reload"><i class="ft-rotate-cw"></i></a></li> <li><a data-action="expand"><i class="ft-maximize"></i></a></li> <li><a data-action="close"><i class="ft-x"></i></a></li> </ul> </div> </div> <div class="card-content collapse show"> <div class="card-body card-dashboard"> <table id="example" class="display nowrap table table-striped table-bordered" style="width:100%;"> <thead> <tr> <th>Enr. Date</th> <th>Email</th> <th>Mobile Number</th> <th>First Name</th> <th>Last Name</th> </tr> </thead> <tfoot> <tr> <th>Enr. Date</th> <th>Email</th> <th>Mobile Number</th> <th>First Name</th> <th>Last Name</th> </tr> </tfoot> </table> </div> </div> </div> </div> </div> </section> 

首先,您无需在HTML中指定列标题。 您可以使用带有title属性的columns / columnDefs选项进行设置。 这样,在初始化DataTable之前,您将不会看到具有默认样式的表。 您的表格标记可能看起来像是: <table id="example" ...></table>

但这当然不是您问题的根本原因。

在我看来,可疑的是您的SQL。 看来您在两次引用您的t_user表:第一次,通过设置$table变量,其次,通过$joinQuery - FROM t_user这一部分。 因此,如果您有机会在var_dump()的适当位置使用var_dump()放弃查询的输出,或者echo显查询本身以检查其有效性,我想,那会给您一个暗示。

您必须确定的另一件事是,您的SQL输出包含与行对应的数组数组或对象数组,并且其中的任何一个都包含在输出JSON的data / aaData中。 否则,您可能需要在ajax.dataSrc选项中指定将数组保存的JSON属性,或者如果JSON本身是数组,则将其设置为空字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM