конвертировать массив json в формат aadata - PullRequest
3 голосов
/ 24 февраля 2011

формат моего текущего массива не интерпретируется форматом данных aaData как значения передаваемого им столбца:

{
    "aaData": [
        {
            "startDate": "09/08/2010 12:00:00 AM",
            "endDate": "13/08/2010 12:00:00 AM",
            "runDate": "16/08/2010 12:00:00 AM",
            "clientId": "40272",
            "clientType": "C",
            "plannerName": "Adrian Mcfly",
            "plannerRegion": "s1",
            "contact": "Vera chaniqua",
            "email": " ",
            "interviewDate": "09/08/2010 12:00:00 AM"
        },
    ]
}

как удалить идентификатор столбца и отобразить только те значения, которые могут быть прочитаны таблицами данныхкак вызов ajax?

Ответы [ 3 ]

7 голосов
/ 07 июля 2011

РЕДАКТИРОВАТЬ 8/29/2012

Начиная с версии 1.9 вы можете отключить наличие корневого свойства JSON.

"sAjaxDataProp": "",

Это, вероятно, то, что вы получите с большинством сериализаторов JSON.

Или настроить

"sAjaxDataProp": "myData",

В datatables 1.8 вы можете отформатировать ваш json следующим образом:

{
        "aaData": [
            {
                "DT_RowClass": "",
                "description": "",             
                "pkgLineTree": {
                    "treeId": {
                        "name": "Jacksonville"
                    }
                }              
            },
            {
                "DT_RowClass": "",
                "description": "",       
                "pkgLineTree": {
                    "treeId": {
                        "name": "Jacksonville"
                    }
                }         
            }

        ]
    }

А в свойствах ваших данных добавьте это

"aoColumns": [    
        {
            "mDataProp": "pkgLineTree.treeId.name"
        },  
        {
            "mDataProp": "shortname"
        },
        {
            "mDataProp": "description"
        }, 
        {
            "mDataProp": "lineStatus"
        }
        ],    
1 голос
/ 25 июня 2011

Ну, в основном, у вас есть JSON представление массива объектов (со свойствами startDate , endDate , ...) , но вам нужен массив массивов строк.

Я предполагаю, что вы выполняете обработку на стороне сервера, поэтому, если вы не хотите изменять код сервера, вы можете просто войти в процесс извлечения и изменить данные прямо перед передачей их в обратный вызов данных.

Далее я просто просматриваю каждый объект в извлеченных данных и создаю массив значений:

$('#example').dataTable( {
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": "scripts/server_processing.php",
    "fnServerData": function ( sSource, aoData, fnCallback ) {
        $.getJSON( sSource, aoData, function (json) { 
            /* --- Here is where we massage the data --- */
            /* if the variable "json" is just a string (I forgot) then evaluate it first into an object (download a json library)*/
            var aaData=[];
            $.each(json, function(index, object) {
                var aData=[];
                $.each(object, function(key, value) { 
                    aData.push(value); //be careful here, you might put things in the wrong column 
                });
                aaData.push(aData);
            }); 
            /* --- And after we're done, we give the correctly formatted data to datatables --- */  /* --- if "json" was a string and not an object, then stringify aaData first (object to json notation, download a library) --- */
            fnCallback(aaData)
        } );
    }
} );

});

Надеюсь, что это работает!

0 голосов
/ 29 февраля 2012

Попробуйте использовать квадратные скобки вместо открытия / закрытия фигурных скобок {и}. Подробности см. В моем ответе на этот вопрос: datatables и ошибка форматирования json с php

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