DataTables с JSON, AJAX и PHP без отображения каких-либо данных - PullRequest
8 голосов
/ 11 августа 2011

Я пытался заставить 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, но моя пустая таблица не заполняется этими данными.

Есть идеи?

@ Кайл: Errr - вот и все. Я думаю, у меня его нет? Это моя первая попытка (борьба) с DataTables, и я просто копирую из документации: http://www.datatables.net/usage/callbacks#fnServerData

@ MarcB: добавил это, но данные по-прежнему не отображаются. Спасибо за помощь

Ответы [ 7 ]

0 голосов
/ 21 февраля 2014

Что вы устанавливаете для 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 */ }
}
0 голосов
/ 05 января 2017

Это на несколько лет позже, но может кому-то помочь.:)

DataTable не может отображать нулевые значения .См. defaultContent , чтобы установить содержимое, когда возврат данных равен нулю.

См. Ссылку: https://datatables.net/reference/option/columns.defaultContent

Для устаревших таблиц данных см. http://legacy.datatables.net/ref и выполните поиск sDefaultContent

0 голосов
/ 25 сентября 2013

Вы также можете добавить следующее, чтобы избежать добавления дополнительного объекта, такого как «aaData»:

"sAjaxDataProp": ''
0 голосов
/ 01 июня 2012

вы можете удалить часть $ .ajax, вместо этого вы можете использовать метод $ .getJSON.

0 голосов
/ 30 января 2012

Посмотрите этот пример ресурса json из DataTables.net: http://datatables.net/examples/examples_support/json_source.txt. Обратите внимание, что вы возвращаете json в квадратных скобках по сравнению с фигурными скобками примера.

0 голосов
/ 19 декабря 2011

У меня была похожая проблема. Оказывается, я не формировал ответ 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);
?>
0 голосов
/ 08 ноября 2011

Этот плагин ожидает, что возвращенный объект JSON будет объектом со свойством, которое является массивом массивов. Это свойство должно называться aaData. Вы не возвращаете объект; вы просто возвращаете массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...