vraagje over het opslaan in een json file
Ik heb een vraagje ik heb een bestand gemaakt waarbij ik knoppen aan kan klikken maar telkens als ik de pagina refresh dan staan de knoppen telkens op de zelfde plek zoals ik heb aangegeven. Nu wil ik het omdraaien ik wil de knoppen die ik de laaste keer heb aangeklikt wil ik in het json bestandje hebben (dat hij opslaat welke er als laaste zijn gebruikt)
ik weet dat je een $post methode moet gebruiken maar kwam er niet uit misschien dat iemand me kan helpen hiermee.
mijn code
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script>
// Load initial values from JSON 'file'
function setLaneStates(jsoninput) {
setLaneState("lane1",jsoninput[0]['lane 1']);
setLaneState("lane2",jsoninput[0]['lane 2']);
setLaneState("lane3",jsoninput[0]['lane 3']);
setLaneState("lane4",jsoninput[0]['lane 4']);
}
//jsonfile = '[{"lane 1":"1","lane 2":"1","lane 3":"5","lane 4":"2"}]';
var jsonRequest = new XMLHttpRequest();
jsonRequest.onreadystatechange = function () {
if (jsonRequest.readyState == 4 && jsonRequest.status == 200) {
var initialstate = JSON.parse(jsonRequest.responseText);
setLaneStates(initialstate);
console.log('Done loading JSON data');
} else {
console.log('Failed to get JSON data');
}
}
jsonRequest.open( "GET", "data.json", true);
jsonRequest.send( null );
</script>
// Load initial values from JSON 'file'
function setLaneStates(jsoninput) {
setLaneState("lane1",jsoninput[0]['lane 1']);
setLaneState("lane2",jsoninput[0]['lane 2']);
setLaneState("lane3",jsoninput[0]['lane 3']);
setLaneState("lane4",jsoninput[0]['lane 4']);
}
//jsonfile = '[{"lane 1":"1","lane 2":"1","lane 3":"5","lane 4":"2"}]';
var jsonRequest = new XMLHttpRequest();
jsonRequest.onreadystatechange = function () {
if (jsonRequest.readyState == 4 && jsonRequest.status == 200) {
var initialstate = JSON.parse(jsonRequest.responseText);
setLaneStates(initialstate);
console.log('Done loading JSON data');
} else {
console.log('Failed to get JSON data');
}
}
jsonRequest.open( "GET", "data.json", true);
jsonRequest.send( null );
</script>
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 06/11/2019 17:08:53 door - Ariën -
Maar als je de pagina ververst kan een serverside taal hiermee aan de slag. Dus je zou zowel het lezen (bij initialisatie/refresh) als schrijven (bij het updaten) van de JSON-file hier aan over kunnen laten. Tenzij je enkel de beschikking hebt over JavaScript, en geen serverside taal (zoals bijvoorbeeld PHP)?
Thomas van den Heuvel op 06/11/2019 17:02:47:
Maar als je de pagina ververst kan een serverside taal hiermee aan de slag. Dus je zou zowel het lezen (bij initialisatie/refresh) als schrijven (bij het updaten) van de JSON-file hier aan over kunnen laten. Tenzij je enkel de beschikking hebt over JavaScript, en geen serverside taal (zoals bijvoorbeeld PHP)?
ja dat klopt, Alleen ik weet niet zo goed hoe ik het voor elkaar krijg heb hem natuurlijk nu zo ingesteld dat bij het opnieuw laden van de pagina meteen de knoppen weer op knop
1/ 1/ 5/ 4 springen.
Bij laden pagina: lees json file met PHP en initialiseer de lanes.
Bij wijzigen: stuur een AJAX-call naar een PHP-script die de nieuwe lane state opslaat in de json file.
Overigens is dit ook een goede oefening om na te denken over hoe je je data structureert. Hierbij loont het de moeite om deze zo kort mogelijk te houden waarbij je alle overbodige informatie achterwege laat.
Dit:
Is niet zo'n sterke manier. Je maakt hier gebruik van (letterlijke) tekstuele labels voor het identificeren van de lanes. Maar de posities van de states zouden in principe al afdoende kunnen zijn voor het identificeren van de lanes. De eerste positie (index 0) correspondeert met de eerste lane, de tweede (index 1) met de tweede lane, et cetera. Je kunt dit dus verkorten tot:
Gewijzigd op 06/11/2019 17:34:25 door Thomas van den Heuvel