带有JSON,AJAX和PHP的DataTables不显示任何数据

时间:2011-08-11 17:55:47

标签: php ajax json datatables

我一直在努力让DataTables与现有的Ajax搜索功能一起使用 - 它本身就可以工作。

我有以下代码:

        $('#SearchResults').dataTable({
            "bProcessing": true,
            "bServerSide": true,
            "bRetrieve": true,
            "sAjaxSource": "process.php?action=searchArtifact",
            "fnServerData": function (sSource, aoData, fnCallback){
                aoData.push({
                    "name": "searchName",
                    "value": $('#ArtifactSearch').attr('value')
                });
                $.ajax({
                    "dataType": "json", 
                    "type": "POST", 
                    "url": sSource, 
                    "data": aoData, 
                    "success": fnCallback
                });

            }
        });

PHP返回一个有效的JSON对象(使用JSON_FORCE_OBJECT):

{"0":{"ARTIFACT_ID":"4E2FE3BCE356C","ARTIFACT_NAME":"123","ARTIFACT_TYPE":"UI","ARTIFACT_LABEL":"Test_Int_EAS_123","ARTIFACT_LOCATION":"Int","ARTIFACT_DOMAIN":"ABC","ARTIFACT_AUTHOR":null,"REGISTERED_EMAIL":"test@test.com","REGISTERED_DATE":"27-07-2011","REGISTERED_TIME":"11:09:00"}

我可以在FireBug中看到这一切很好,但我的空表没有填充这些数据。

有什么想法吗?

@Kyle:Errr - 就是这样。我猜我没有?这是我对DataTables的第一次尝试(斗争),我只是从文档中复制:http://www.datatables.net/usage/callbacks#fnServerData

@MarcB:添加了 - 但仍然没有显示数据。谢谢你的帮助

7 个答案:

答案 0 :(得分:0)

此插件期望返回的JSON对象是一个对象,其属性是一个数组数组。此属性应称为“aaData”。你没有归还一个物体;你刚刚返回阵列。

答案 1 :(得分:0)

我遇到了类似的问题。事实证明我没有正确地形成JSON响应。这对我有用:

<?php

$arr = array ('aaData' => array(
array('3','35','4', '$14,500', '$15,200','$16,900','5','1'),
array('1','16','4', '$14,200', '$15,100','$14,900','Running','1'),
array('5','25','4', '$14,500', '$15,600','$16,900','Not Running','1')
)
);

echo json_encode($arr);
?>

答案 2 :(得分:0)

从DataTables.net查看此json资源示例:http://datatables.net/examples/examples_support/json_source.txt。请注意,与示例的大括号相比,您将使用括号返回json。

答案 3 :(得分:0)

你可以删除$ .ajax部分,而不是使用$ .getJSON方法。

答案 4 :(得分:0)

您还可以添加以下内容以避免添加额外的对象,例如“aaData”:

"sAjaxDataProp": ''

答案 5 :(得分:0)

你有什么设置sEcho?

您的JSON应具有以下结构:

{
  "sEcho": 'refer to "sEcho" in $_GET or $_POST; don't forget to sanitize', 
  "iTotalRecords": 'for pagination',
  "iTotalDisplayRecords": 'number displayed',
  "aaData" => { /* your data here */ }
}

答案 6 :(得分:0)

这是迟了几年但可能对某人有所帮助。 :)

DataTable无法呈现空值。当数据返回为空时,请参阅 defaultContent 以设置内容。

请参阅链接:https://datatables.net/reference/option/columns.defaultContent

对于旧版数据表,请参阅http://legacy.datatables.net/ref并搜索 sDefaultContent