Json en php
Ik probeer het met json; ik sluit de php-code af met echo "json_encode($array_met_gegevens);". In javascript lukt het me het php-bestand op te halen via "var ajax = new XMLHttpRequest();". En dan loop ik vast.
Als ik in javascript "var obj = JSON.parse(ajax.responseText);" gebruik (met de bedoeling "obj" later als array verder te ontleden), dan loopt mijn code vast en gebeurt er niets meer.
Als ik "var obj = ajax.responseText;" gebruik, "obj" als een array beschouw en probeer om daaruit een waarde toe te kennen via bijvoorbeeld "p.innerHTML = obj['1'];", dan verschijnt er "undefined" in mijn html-site.
Wat doe ik verkeerd? Ofwel: hoe geef ik een array door van php naar javascript?
Toevoeging op 21/09/2013 12:17:31:
http://api.jquery.com/jQuery.ajax/
Toevoeging op 21/09/2013 12:30:39:
Maar om je vraag te beantwoorden je kunt de data rechtstreeks benaderen. Stel je json is {"naam":"joop"} en je json staat in de variabele data dan kun je doen: alert(data.naam);
Voledigheidshalve: zet een json header in je php bestand die de json maakt
Ik ontdekte dat mijn database enkele tekens bevatte waar json blijkbaar niet mee overweg kon: "é" heb ik moeten vervangen voor html-code als "é". En dan blijkt het ineens verbijsterend eenvoudig - als ik de php-code (met "echo 'json_encode($array_met_gegevens);'") uitvoer, verschijnt daar een heel mooie array in mijn browser.
Als het leven met jQuery nog eenvoudiger wordt, kan mijn week niet meer stuk.
Ik raad iedereen aan om de database collatie, de mysql(i) of PDO charset in te stellen op utf-8 ( mysqli_set_charset() ) en ook je html in te stellen op utf8.
Daarna heb je geen problemen meer met speciale karakters als éâö
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
/* change character set to utf8 */
$mysqli->set_charset("utf8");
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
</body>
</html>
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
/* change character set to utf8 */
$mysqli->set_charset("utf8");
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
</body>
</html>
Gewijzigd op 22/09/2013 18:05:24 door Frank Nietbelangrijk