2011-03-18 14 views
0

尋找一種方法來設置一個server-side datatable使用PHP來解析 XML json?jQuery DataTables:服務器端的例子與PHP和XML,沒有數據庫

好吧,我從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":"[email protected]","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"}]} 
+0

你能告訴我們你到目前爲止,請嗎? – Charles 2011-03-18 00:07:33

+0

只是在這個頁面上的代碼... http://www.datatables.net/examples/server_side/server_side.html – Jeffrey 2011-03-18 01:00:59

+0

因此,它看起來像那個特定的插件可以*只能*與HTML表或JSON數據工作。你最好的選擇可能是將你的XML轉換成HTML表格或json。這是你卡住的地方嗎? – Charles 2011-03-18 01:39:14

回答

0

正如Charles建議DataTables目前只接受具有特定格式的JSON輸入。原因是支持抽象格式會給內部和初始化增加很多開銷(即你需要告訴它你希望它使用// articles/book @ author或其他)。

因此,一種選擇是使用fnServerData(http://datatables.net/usage/callbacks#fnServerData)來創建自己的Ajax調用並獲取XML,而不是將其轉換爲DataTable需要的JSON格式,並使用簡單的循環。

艾倫

+0

json數據現在位於問題的上方。我如何開始? – Jeffrey 2011-03-18 18:29:45

0

感謝您的示例數據。

您將需要稍微轉換數據。

DataTables can take a Javascript data structure (JSON),但它必須是陣列陣列

您的示例數據具有一個名爲Entries的根元素,其中包含一個數組。那很棒。不幸的是,該數組中的每個元素都是散列 - 鍵/值對。

您只需要來自該對的值,而不是密鑰。

這個Javascript會將您的Entries散列數組轉換爲普通的舊數組數組。我在這裏使用Javascript 1.6 for each ... in語法,因爲我有一個brainfart,並不記得我們在這裏討論的是一個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選項,如我上面提供的鏈接記錄。 由於您似乎陷入了無用鍵名稱的反模式,因此您需要制定如何自己展示列標題

相關問題