Reputation: 55
I have the below code regarding populating the data in different table row from one array.
I want to display data in a different row and get language dynamically in language column (like below picture)
Object:
{
"English Name": "English",
"English Description": "English Description",
"Hindi Name": "Hindi Name",
"Hindi Description": "Hindi Description",
"Marathi Name": "Marathi Name",
"Marathi Description": "Marathi Description"
}
$.ajax(settings).done(function(response) {
var result = JSON.parse(response);
var colName = [];
for (var i = 0; i < result.data.length; i++) {
for (var key in result.data[i]) {
if (colName.indexOf(key) === -1) {
colName.push(key);
}
}
}
console.log(colName);
var showData = document.getElementById('showData');
for (i = 0; i < result.data.length; i++) {
var row = `<tr>
<td>English</td>
<td>${result.data[i].EnglishName}</td>
<td>${result.data[i].EnglishDescription}</td>
</tr>
<tr>
<td>Hindi</td>
<td>${result.data[i].HindiName}</td>
<td>${result.data[i].HindiDescription}</td>
</tr>
<tr>
<td>Marathi</td>
<td>${result.data[i].MarathiName}</td>
<td>${result.data[i].MarathiDescription}</td>
</tr>`;
showData.innerHTML += row;
}
});
});
Upvotes: 0
Views: 54
Reputation: 3046
My guess is that your JSON needs to look more like this:
{
"data": [
{
"language": "English",
"familyName": "English Name",
"familyDescription": "English Description"
},
{
"language": "Hindi",
"familyName": "Hindi Name",
"familyDescription": "Hindi Description"
},
{
"language": "Marathi",
"familyName": "Marathi Name",
"familyDescription": "Marathi Description"
}
]
}
And in your loop, a row should look like this, if result.data
contains the arrays:
var row = `<tr>
<td>${result.data[i].language}</td>
<td>${result.data[i].familyName}</td>
<td>${result.data[i].familyDescription}</td>
</tr>`;
EDIT
If the JSON always has the same format, then you can access it by key, no need for a loop:
<td>English</td>
<td>result.data["English Name"]</td>
<td>result.data["English Description"]</td>
Upvotes: 2