Ag Grid Node naar string
Wie kan/wil mij helpen?
Ik ben aan het oefenen met Javascript en kom ergens niet uit
Ik gebruik AG grid om met een tabel te werken.
Mijn javascript code;
function onBtForEachNode() {
console.log('### api.forEachNode() ###');
gridOptions.api.forEachNode(this.printNode);
}
&
function printNode(node, index) {
if (node.group) {
console.log(index + ' -> group: ' + node.key);
} else {
console.log(index + ' -> data: ' + node.data.athlete + ', ' + node.data.age + node.data.country + ', ' + node.data.year + ', ' + node.data.date + ', ' + node.data.sport + ', ' + node.data.gold + ', ' + node.data.silver);
}
}
Nu krijg ik in de console een uitslag zoals;
1 -> data: Michael Phelps, 19United States, 2004, 29/08/2004, Swimming, 6, 0
Nu wil ik dit graag doorzetten naar een array om later door te zetten naar een database.
Heeft iemand een idee hoe ik dit het best op kan pakken?
Alvast bedankt mocht iemand reageren.
Groet, Zwolly Wood
Is verpakken in JSON geen beter idee?
Zwolly Wood op 14/10/2019 15:33:30:
Nu wil ik dit graag doorzetten naar een array om later door te zetten naar een database
Kun je dat niet rechtstreeks(er) doen? Alles/het meeste zit immers al in node.data?
Je hebt dan je hele data array (aan de javascript kant) in een (JSON) string. Deze string kun je naar de server doorzetten, en daar kun je dan weer:
Alternatief is dat je de hele data als losse velden aan de GET (evt. POST) meegeeft, zie bijvoorbeeld hier.
Hoe kan ik bijv. de uitkomst van de eerste 'foreach' opslaan in een variabele en weer 'hergebruiken' in de volgende foreach? Doel hiervan is om uiteindelijk alle nodes achter elkaar in een string te krijgen en dan om te zetten naar JSON.
Een foreach genereert zelf geen uitkomst. een foreach gaat enkel alle elementen in een array doorlopen.
>> Doel hiervan is om uiteindelijk alle nodes achter elkaar in een string te krijgen en dan om te zetten naar JSON.
Je denkt nog een beetje te ingewikkeld. Je hoeft de array (nodes) niet in een string te zetten. Je knalt in één keer de hele array (alle nodes) in JSON.
Misschien helpt een werkend voorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$players = [
[
'name' => 'Diego Lainez',
'age' => 17,
'country' => 'Mexico',
],
[
'name' => 'Mikel Oyarzabal',
'age' => 20,
'country' => 'Spanje',
],
[
'name' => 'Malcom',
'age' => 20,
'country' => 'Brazilië',
],
];
$json = json_encode($players);
echo $json . "<br>\n<br>\n";
// nu terug:
$spelers = json_decode($json, true);
foreach($spelers as $speler) {
echo 'name: ' . $speler['name'] . ', age: ' . $speler['age'] . ', country: ' . $speler['country'] . "<br>\n";
}
?>
$players = [
[
'name' => 'Diego Lainez',
'age' => 17,
'country' => 'Mexico',
],
[
'name' => 'Mikel Oyarzabal',
'age' => 20,
'country' => 'Spanje',
],
[
'name' => 'Malcom',
'age' => 20,
'country' => 'Brazilië',
],
];
$json = json_encode($players);
echo $json . "<br>\n<br>\n";
// nu terug:
$spelers = json_decode($json, true);
foreach($spelers as $speler) {
echo 'name: ' . $speler['name'] . ', age: ' . $speler['age'] . ', country: ' . $speler['country'] . "<br>\n";
}
?>
In javascript kun je een json-string weer omzetten in een object.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var txt = '[{"name":"Diego Lainez","age":17,"country":"Mexico"},{"name":"Mikel Oyarzabal","age":20,"country":"Spanje"},{"name":"Malcom","age":20,"country":"Brazili\u00eb"}]';
var obj = JSON.parse(txt);
for(var i = 0 ; i < obj.length ; i++) {
document.getElementById("demo").innerHTML += obj[i].name + ' - ' + obj[i].age + ' - ' + obj[i].country + '<br>';
}
</script>
</body>
</html>
<html>
<body>
<p id="demo"></p>
<script>
var txt = '[{"name":"Diego Lainez","age":17,"country":"Mexico"},{"name":"Mikel Oyarzabal","age":20,"country":"Spanje"},{"name":"Malcom","age":20,"country":"Brazili\u00eb"}]';
var obj = JSON.parse(txt);
for(var i = 0 ; i < obj.length ; i++) {
document.getElementById("demo").innerHTML += obj[i].name + ' - ' + obj[i].age + ' - ' + obj[i].country + '<br>';
}
</script>
</body>
</html>
Gewijzigd op 14/10/2019 20:26:52 door Frank Nietbelangrijk
Zwolly Wood op 14/10/2019 19:25:45:
Echter weet ik niet hoe ik meerdere nodes kan bundelen in één string.
Door ze te "verzamelen" in een array:
Bedankt voor de hulp allemaal