Json format issue
Json format issue
Hi Guys,
I am extracting some data from an SLQITE database as follows:
var newJson =[];
btnFind.onclick=function()
{
sqlList=[];
sqlList[0]=["SELECT * FROM studentData2 ", nameFound];
Sql(DB, sqlList);
}
I extract the data
function nameFound(transaction, results) {
if(results.rows.length>0) {
newJson=[];
for (var k = 0; k < results.rows.length; k++) {
var row = results.rows.item(k);
if(k > 0) newJson += ',';
newJson += '{ "name":"' + row.name + '", "age":"' + row.age + '", "Field2":"' + row.Field2 + '", "Field3":"' + row.Field3 + '", "Field4":"' + row.Field4 + '", "Field5":"' + row.Field5 + '"}';
}
jsonall = newJson + ']}';
newJson = '['+newJson+']';
alert(newJson); //shows me a correct JSON as string
// NSB.MsgBox(results.rows.item(0).name + " is " + results.rows.item(0).age);
}
I get the result.
[{ "name":"Ste", "age":"59", "Field2":"undefined", "Field3":"undefined", "Field4":"undefined", "Field5":"undefined"},{ "name":"Ste2", "age":"60", "Field2":"undefined", "Field3":"undefined", "Field4":"undefined", "Field5":"undefined"}]
I test this at https://jsonformatter.org/ and it shows as vaild Json.
If I use the following it works. ie copy the json data into
'''
var newJson = [{ "name":"Ste", "age":"59", "Field2":"undefined", "Field3":"undefined", "Field4":"undefined", "Field5":"undefined"},{ "name":"Ste2", "age":"60", "Field2":"undefined", "Field3":"undefined", "Field4":"undefined", "Field5":"undefined"}];
$("#dtContacts").dataTable().fnDestroy();
$('#dtContacts').empty();
tableContacts = $('#dtContacts').DataTable( {
'data':newJson,
'columns': [
{ 'data' : 'name' , title : 'Name'},
{ 'data': 'age' , title : 'Age'}
]
})
But if I try to use newJson directly I get errors
DataTables warning: table id=dtContacts - Requested unknown parameter 'name' for row 0, column 0. For more information about this error, please see http://datatables.net/tn/4
```
Is there something I am not understanding about the format of newJson
Cheers
Steve Warby
This question has an accepted answers - jump to answer
Answers
Does this mean you are using the
ajaxoption? If so then, by default, Datatables looks for the row data in thedataobject as described here:https://datatables.net/manual/ajax
You would use the
ajax.dataSrcoption to change the default. The second example is what you want.Kevin
No. Instead of
I dont add the above and use the newJson created earlier.
so my code is just
Oh, I see. Looks like your function
nameFoundis creating a string (newJson) and using that string to add the data to Datatables using'data':newJson,. That won't work. Datatables expects a Javascript array when usingdata.What is the original data source of
results? And what is its data structure? Trying to understand if you need to loop through it because it may be a structure the Datatables can just use.If you do need to loop through it then you will want
newJsonto be an array of objects. instead of this:You will want something like this to build an array of row objects:
Kevin
Hi kthorngren,
thanks for the info I now have it working with your code above.
Cheers
Steve Warby