Json Datatables:未捕获类型错误:无法读取属性';长度';未定义的

Json Datatables:未捕获类型错误:无法读取属性';长度';未定义的,json,datatables,Json,Datatables,我试图将ajax源代码用于数据表,但在使用过程中遇到了一些错误。以前,Ajax没有用于数据表,它们工作得很好,但是在尝试使用Ajax和JSON时,我遇到了一些错误 我收到的错误如下: <?php $tableName = "mctrade_trades"; $result = mysql_query("SELECT `id`, `Minecraft_Username`, `Block_Name`, `Quantity`, `Cost`, `Trade_Status` FROM $tabl

我试图将ajax源代码用于数据表,但在使用过程中遇到了一些错误。以前,Ajax没有用于数据表,它们工作得很好,但是在尝试使用Ajax和JSON时,我遇到了一些错误

我收到的错误如下:

<?php 
$tableName = "mctrade_trades";
$result = mysql_query("SELECT `id`, `Minecraft_Username`, `Block_Name`, `Quantity`, `Cost`, `Trade_Status` FROM $tableName");

$data = array();
while ( $row = mysql_fetch_assoc($result) )
{
    $data[] = $row;
}
header("Content-type: application/json");
echo json_encode( $data );    

?>
未捕获的TypeError:无法读取未定义的属性“length”

编辑:在直接使用此文本下方的修订代码时,此错误不再存在,但数据表仍被破坏(无搜索、分页、排序等)。有一个活生生的例子可能会有所帮助,因此请尝试以下网站:

加载页面时创建表的代码如下:

$(document).ready(function() {
    $('#trades').dataTable( {
        "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
        "sPaginationType": "bootstrap",
        "bProcessing": true,
        "bServerSide": true,
        "aoColumns": [
            { "mData": "id" },
            { "mData": "Minecraft_Username" },
            { "mData": "Block_Name" },
            { "mData": "Quantity" },
            { "mData": "Cost" },
            { "mData": "Trade_Status" },
          ],
        "sAjaxSource": "test.php"
    } );
} );
该表生成正确,但由于此错误,在表的正上方有一段文字“Processing”,您无法使用datatable的任何功能,例如搜索

下面是使用上述JSON的表的图像:


我假设错误出现在我的JSON输出中,但我不知道它到底出了什么问题,也不知道应该怎么做来修复它。我对Web开发非常陌生,实现Datatables一直是学习的重点!

您的JSON输出是错误的,原因如下:

  • iTotalRecords
    iTotalDisplayRecords
    字段丢失。这就是分页(以及所有其他功能)被破坏的原因(请注意页脚部分中的消息“显示NaN条目的1到NaN(从NaN总条目中筛选出来的))。有关服务器端处理的详细信息,请参阅
  • JSON响应之后有一些HTML代码
  • 以下是额外的HTML代码(摘自):


    还要注意的是,
    mysql.*
    函数已被弃用,因此您应该使用或;查看更多详细信息。

    如果删除
    “sAjaxDataProp”:“,
    数据表配置中的行?你还犯同样的错误吗?@TanzeelKazi当我删除那条线时,似乎什么都没有发生。我已经更新了我的帖子,以显示我正在使用的新JS,但是现在似乎DataTable功能不起作用,而不是出现任何错误。分页已不复存在,搜索、排序等一切现在都不起作用,只是不再有错误来解释原因。如果有帮助的话,这里是我的网站链接,你可以在这里看到测试:添加的额外内容的问题是,我的主机(免费)自动插入,所以我没有选择。我想我需要更换主机,但在此期间,我将在本地进行测试。我会给你一个尝试的答案,并在另一条评论中回复你我的结果!谢谢在尝试了您提供的代码之后,我遇到了与以前基本相同的问题,只是条目不再显示
    NaN
    它们显示了正确的条目数。搜索和筛选(排序)仍处于中断状态。当我尝试使用它们时,一个“正在处理”的文本会在瞬间出现,但没有任何变化。编辑:这是在本地主机上完成的。JSON之后的额外html不在localhostMy PHP代码中,这只是一个示例。您可以找到更好的服务器端PHP脚本。
    [{"id":"1","Minecraft_Username":"fog","Block_Name":"DIAMOND_PICKAXE","Quantity":"1","Cost":"100","Trade_Status":"1"},{"id":"2","Minecraft_Username":"fog","Block_Name":"DIAMOND_PICKAXE","Quantity":"1","Cost":"1002","Trade_Status":"1"},{"id":"3","Minecraft_Username":"fog","Block_Name":"DIAMOND_PICKAXE","Quantity":"1","Cost":"1035","Trade_Status":"1"},{"id":"4","Minecraft_Username":"fog","Block_Name":"DIAMOND_PICKAXE","Quantity":"1","Cost":"1035","Trade_Status":"1"},{"id":"5","Minecraft_Username":"fog","Block_Name":"DIAMOND_PICKAXE","Quantity":"1","Cost":"100","Trade_Status":"2"},{"id":"6","Minecraft_Username":"fog","Block_Name":"DIAMOND_PICKAXE","Quantity":"1","Cost":"100","Trade_Status":"2"},{"id":"7","Minecraft_Username":"fog","Block_Name":"DIAMOND_PICKAXE","Quantity":"1","Cost":"10000","Trade_Status":"2"}]
    
    <!-- Hosting24 Analytics Code -->
    <script src="http://stats.hosting24.com/count.php"></script>
    <!-- End Of Analytics Code -->
    
    <?php 
    
    $link = mysqli_init();
    
    // Adjust hostname, username, password and database name before use!
    $db = mysqli_real_connect($link, "hostname", "username", "password", "database") or die(mysqli_connect_error());
    
    $SQL = 'SELECT `id`,`Minecraft_Username`,`Block_Name`,`Quantity`,`Cost`,`Trade_Status` FROM mctrade_trades';
    $result = mysqli_query($link, $SQL) or die(mysqli_error($link));
    
    $aaData = array();
    while ($row = mysqli_fetch_assoc($result)) {
        $aaData[] = $row;
    }
    
    $response = array(
      'aaData' => $aaData,
      'iTotalRecords' => count($aaData),
      'iTotalDisplayRecords' => count($aaData)
    );
    if (isset($_REQUEST['sEcho'])) {
      $response['sEcho'] = $_REQUEST['sEcho'];
    }
    
    header('Content-type: application/json'); 
    echo json_encode($response);
    
    ?>