带有 JSON、AJAX 和 PHP 的数据表不显示任何数据

Posted

技术标签:

【中文标题】带有 JSON、AJAX 和 PHP 的数据表不显示任何数据【英文标题】:DataTables with JSON, AJAX and PHP not displaying any data 【发布时间】:2011-10-25 05:26:57 【问题描述】:

我一直在尝试让 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:错了——就是这样。我想我没有?这是我第一次尝试(挣扎)使用 DataTables,我只是从文档中复制:http://www.datatables.net/usage/callbacks#fnServerData

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

【问题讨论】:

请在帖子中添加 fnCallback 函数好吗? success: function(data) fnCallback(data); 明确传递返回的数据? 你能告诉我们返回结果的PHP源代码吗?因为我认为它没有给出这里要求的正确格式datatables.net/usage/server-side 我做了一个简单的教程,很好地解释了如何解决您的问题,请查看[此链接](refreshmymind.com/datatables-dom-php-ajax-mysql-datasources) 【参考方案1】:

我遇到了类似的问题。原来我没有正确形成 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】:

这个插件期望返回的 JSON 对象是一个对象,其属性是一个数组。此属性应称为“aaData”。您没有返回对象;你只是返回数组。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

"sAjaxDataProp": ''

【讨论】:

【参考方案6】:

您将 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 */ 

【讨论】:

【参考方案7】:

这晚了几年,但可能会对某人有所帮助。 :)

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

查看链接:https://datatables.net/reference/option/columns.defaultContent

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

【讨论】:

以上是关于带有 JSON、AJAX 和 PHP 的数据表不显示任何数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有 json 和 php 的 jquery 的 $.ajax 函数上传文件

带有prototype和json的简单ajax请求

需要身份验证时,带有 JSON 中断的跨源 AJAX 请求

带有json响应的jQuery ajax请求,如何?

php json数据保留原样中文

带有SMTP的AJAX jQuery JSON PHPMailer