Beste mensen, ik zit met het volgende probleem.

Ik heb een pagina waarin ik een <div id="pagina"></div> zet. Vervolgens heb ik wat linkjes die mbv AJAX bepaalde content in die div zetten. De content wordt bepaald in het bestand "actie.php". Nou moet ik in actie.php de contentType definieren. Doe ik dit niet, dan worden veel speciale karakters niet goed weergegeven. Dus hierin staat bovenaan:

header('Content-Type: text/html; charset=ISO-8859-1');

Dit gaat goed, als ik d.m.v. een link + AJAX call het bestand actie.php aanroep en wat spul in de "pagina" div zet. Maar als ik de pagina voor 't eerst laad, wil ik dat "pagina" ook al gevuld wordt met iets uit "actie.php". Dit probeerde ik "actie.php" gewoon te includen. Alleen bij een include pakt hij die header dus nog een keer, en krijg ik de fout:

"Cannot modify header information - headers already sent ..."

Wat ik dus zoek is een manier om bij het laden van de site voor de eerste keer, al iets in de div "pagina" te krijgen uit actie.php, maar dan zonder een include. Ik heb geprobeerd een AJAX call aan te roepen doormiddel van onload, maar hierbij gebeurde niks.

Als iemand wat tips heeft waar ik naar moet zoeken, of hoe ik dit kan doen, alvast bedankt!
Je kunt je header toch bovenin de pagina zetten die de AJAX request verstuurt? De pagina die de request verwerkt hoeft verder helemaal geen headers en zo te bevatten.
Nee, dit werkt niet. Als ik in actie.php niet instel dat de contentType "ISO-8859-1" geeft hij veel speciale tekens niet goed weer, maar krijg ik gewoon een blokje of een vraagteken. Zodra ik de contentType er wel in zet, laat 'ie alles goed zien.

De content die door AJAX in een div wordt gezet houdt dus geen rekening met de contentType die in de bovenliggende pagina wordt gespecificeerd.
In dat geval zou je met [php]utf8_encode[/php] aan de gang kunnen misschien?
Whups, het werkt al :) Onderaan de hoofdpagina roep ik gewoon een AJAX call aan, en dan vult ie de div (die onderaan de pagina inmiddels al bestaat en gevuld kan worden).

Had dit eerder ook geprobeerd, denk een paar aanhalingstekens verkeerd ofzo. Vraag posten helpt altijd, want dan vind je een paar minuten later 't antwoord vaak zelf :P
Klopt, die ervaring heb ik ook ;-)

Reageren