Is this DataTables-friendly JSON format?
Is this DataTables-friendly JSON format?
Hi! I'm trying to load some JSON data from Formidable Forms into an instance of DataTables. I'm not having any success, despite being somewhat familiar with DataTables using ajax.
I've tried via the Formidable Forms API and via a static JSON test file, with similar failure, which makes me suspect the data format.
Before I go into troubleshooting my DataTables instance, I'd like to eliminate any issues with the source data first. So could anyone confirm that the following is a DataTables-friendly JSON format?
{
"zfzdv": {
"id": "25",
"item_key": "zfzdv",
"name": "Ally Welles",
"ip": "10.77.196.134",
"meta": {
"dt_rowid2": "1",
"contact-type": "Driver",
"contact-name": "Ally Welles",
"contact-name-value": {
"first": "Ally",
"last": "Welles"
},
"contact-mobile": "07349 805179",
"contact-phone": "",
"contact-email": "ally.welles@vaseymail.log",
"contact-address": "19 Seen Street Royston Vasey ",
"contact-address-value": {
"line1": "19 Seen Street",
"city": "Royston Vasey",
"state": "The North"
},
"submit7": "",
"h8yd2": ""
},
"form_id": "9",
"post_id": "0",
"user_id": "1",
"parent_item_id": "0",
"is_draft": "0",
"updated_by": "1",
"created_at": "2024-05-01 09:49:30",
"updated_at": "2024-05-01 09:53:06"
},
"kznvt": {
"id": "26",
"item_key": "kznvt",
"name": "Barbara Dixon",
"ip": "10.77.196.134",
"meta": {
"dt_rowid2": "2",
"contact-type": "Operator Rep",
"contact-name": "Barbara Dixon",
"contact-name-value": {
"first": "Barbara",
"last": "Dixon"
},
"contact-mobile": "",
"contact-phone": "02770 892905",
"contact-email": "barbara.dixon@babscabs.log",
"contact-address": "Bab's Cabs Royston Vasey ",
"contact-address-value": {
"line1": "Bab's Cabs",
"city": "Royston Vasey",
"state": "The North"
},
"submit7": "",
"h8yd2": ""
},
"form_id": "9",
"post_id": "0",
"user_id": "1",
"parent_item_id": "0",
"is_draft": "0",
"updated_by": "1",
"created_at": "2024-05-01 09:56:15",
"updated_at": "2024-05-01 09:57:45"
}
}
This question has accepted answers - jump to:
Answers
Datatables expects an array of objects where each array element is a row of data. See the data docs and ajax docs for more details. Something like this would work:
Kevin
Thanks for a speedy reply, Kevin
So there's no way that DataTables can accommodate the unique 5-char keys, then?
Bah, this was what I was fearing, as I was hoping to incorporate Editor and have the ability to send updated/new data back to Formidable Forms via API. Obviously stripping the keys is going to make that impossible.
I'm slightly surprised by this, given all the other amazing things that DataTables can do, but I'm sure there are good reasons!
Oh well, back to the drawing board. Thanks again.
Datatables expects each row to be an array element. With my change to the structure you could use
rowId
andidSrc
as theitem_key
property. You can useajax.dataSrc
to convert the JSON response to one that Datatables supports.You can use events like
preSubmit
to modify the Editor's sent data to format it to support the Formidable structure. Then usepostSubmit
to convert it back to a format the Editor supports. See the Editor client/server data docs for details.TL;DR you could use Editor and Datatables by manipulating the JSON data to the format supported by both Formidable and Datatables/Editor.
Kevin
Thanks once more for the guidance!
I did consider that some sort of on-the-fly restructuring could work, but I think that's beyond my capabilities [I'm more of a designer than a developer].
I will look into what you've suggested, though. Much appreciated