Json en php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Vincent Jansen

Vincent Jansen

21/09/2013 09:41:33
Quote Anchor link
Met php haal ik data op uit een database. Deze wil ik doorgeven en via javascript zichtbaar maken in een html-site, maar het lukt me niet de array van php in javascript te krijgen.

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?
 
PHP hulp

PHP hulp

26/11/2024 15:38:04
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/09/2013 12:10:24
Quote Anchor link
Je kan het makkelijker doen met jquery.ajax().


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
 
Vincent Jansen

Vincent Jansen

22/09/2013 13:47:43
Quote Anchor link
Hoi Frank, dank voor je antwoord.

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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/09/2013 18:04:09
Quote Anchor link
Waarschijnlijk staat je database Collatie niet ingesteld op utf8_unicode_ci. (ik neem aan dat de data die in de json string staat uit de database komt).

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>
Gewijzigd op 22/09/2013 18:05:24 door Frank Nietbelangrijk
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.