jQuery DataTables: пример на стороне сервера с php и xml, без базы данных - PullRequest
0 голосов
/ 18 марта 2011

Ищете способ настроить данные на стороне сервера с использованием PHP для анализа XML json?

Хорошо, я получаю данные от wufoo, поэтому я также могу получить json. Как я могу начать со следующими данными?

{"Entries":[{"EntryId":"33","Field71":"","Field41":"John","Field42":"Smith","Field55":"","Field34":"2004","Field375":"Arts, Design, Entertainment, Sports and Media","Field378":"Select One","Field4":"Kayak Outfitter","Field3":"Kayak Tours, Inc","Field7":"123 Main Street","Field8":"","Field9":"New York","Field10":"New York","Field11":"54209","Field12":"United States","Field19":"(555)555-5555","Field23":"contact@email.com","Field46":"http:\/\/www.website.com","Field21":"","Field49":"","Field6":"May>September","Field65":"","Field69":"","Field25":"","Field37":"Its all about Self-Motivation.","Field30":"Yes","Field31":"Yes","Field172":"","Field39":"","DateCreated":"2009-01-30 05:46:02","CreatedBy":"public","DateUpdated":"2010-08-08 22:23:30","UpdatedBy":"User"}]}

Ответы [ 2 ]

0 голосов
/ 18 марта 2011

Спасибо за пример данных.

Вам потребуется немного преобразовать данные.

DataTables может принимать структуру данных Javascript (JSON) ,но это должен быть массив массивов .

В ваших данных образца есть корневой элемент с именем Entries, который содержит массив.Замечательно.К сожалению, каждый элемент в этом массиве в настоящее время является хеш-парой ключ / значение.

Вам нужно только значения из этой пары, а не ключи.

ЭтоJavascript преобразует ваш Entries массив хэшей в простой старый массив массивов.Я использую здесь синтаксис Javascript 1.6 for each ... in, потому что у меня был брейнфарт и я не помнил, что мы говорим о плагине jQuery, и написал его без этой зависимости.

var entries = /* JSON as provided in question */;
var new_array = new Array();
var el = entries['Entries'].length;
for(i = 0; i < el; i++) {
    var inner_array = new Array();
    for each (var value in entries['Entries'][i]) {
        inner_array[ inner_array.length ] = value;
    }
    new_array[ new_array.length ] = inner_array;
}

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

0 голосов
/ 18 марта 2011

Как предполагает Чарльз, DataTables в настоящее время принимает только входные данные JSON с определенным форматом. Причина этого заключается в том, что поддержка абстрактных форматов привела бы к большим накладным расходам как на внутренние компоненты, так и на инициализацию (т. Е. Вам нужно было бы сказать, что вы хотите, чтобы она использовала // article / book @ author или что-либо еще).

Таким образом, один из вариантов - использовать fnServerData (http://datatables.net/usage/callbacks#fnServerData), чтобы сделать свой собственный вызов Ajax и получить XML, - а затем преобразовать его в формат JSON, необходимый для DataTables, с помощью простого цикла.

Allan

...