PHP kan json niet decoden

  • Hallo,


    ik ben momenteel bezig met een map, de data is in json. Omdat de json geinclude wordt door javascript en deze niet in de cache mag opgeslagen worden heb ik deze php-code voor de json gezet:

    PHP
    <?php
    				header("Cache-Control: no-cache, must-revalidate");   // HTTP/1.1
    				header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");   // Date in the past
    			?>


    en daarna heb ik het bestand opgeslagen als een php file


    Nu wordt dit bestand ook geopend met fopen in php maar als ik de json dan wil decoden krijg ik een "JSON_ERROR_SYNTAX"...
    Hoe los ik dit op? (Indien ik de php code wegdoe, werk het wel...)


    Hoe kan ik ervoor zorgen dat de json toch gedecoded wordt?


    Alvast bedankt,
    Willem

  • M.Martens: JSON is geen taal en hij programmeert in PHP..


    Waar heb je het PHP fragment wat je post neergezet? Want ik denk te begrijpen dat je een file x hebt met daarin het bovenstaande PHP fragment en daaronder JSON, en een ander PHP bestand dat met fopen file x opent en deze over het netwerk schrijft.


    Dat kan ik verkeerd hebben. Maar het bovenstaande PHP fragment moet in het bestand komen te staan dat de JSON serveert.


    Kun je anders alle code van toepassing eens posten?

  • Dit is de json file:

    PHP
    <?php
    
    
    				header("Cache-Control: no-cache, must-revalidate");   // HTTP/1.1
    				header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");   // Date in the past
    				header('Content-type: application/json');
    			?>{"map":[[{"ground":1},{"ground":1},{"ground":1},{"ground":1},{"ground":1},{"ground":1}],[{"ground":1},{"ground":1},{"ground":1},{"ground":1},{"ground":1,"village":1},{"ground":1}],[{"ground":1},{"ground":1,"village":1},{"ground":1},{"ground":1},{"ground":1},{"ground":1}],[{"ground":1},{"ground":1,"oase":1},{"ground":1,"village":1},{"ground":1},{"ground":1},{"ground":1}],[{"ground":1},{"ground":1,"village":1},{"ground":1},{"ground":1},{"ground":1},{"ground":1}],[{"ground":1},{"ground":1},{"ground":1},{"ground":1},{"ground":1},{"ground":1}]]}


    En dit is het andere script:


    Ziet iemand iets?

  • Ik heb helemaal niet gezegd dat de json niet altijd hetzelfde is?


    maar het probleem is dat de json ook wordt geladen met ajax, maar dan wordt deze opgeslagen in de cache en dat mag niet...
    Daarom staat de header er dus boven :s


    Edit:
    ik ben overgestapt naar ajax in jQuery omdat je hier de cache kan uitschakelen...
    De php header in het json bestand is verwijdert, maar nu geeft de ajax code "[Object, object]" terug ipv de echte jsoncode die mijn oude ajax returnde...
    Dit was mijn oude code:


    En dit is mijn nieuwe code

    Code
    $.ajaxSetup({dataType: "json", url: file, cache: false, type: "GET", success:function(result){engine.data.parse(result, whendone)}});
    	$.ajax();


    Wat ik moet aanpassen zodat hij het juiste teruggeeft?


    Oplossing:
    dataType moest aangepast worden naar "text", best vreemd maar het werkt wel :)
    Weet iemand ofdat de jQuery ajax "cache: false" niet werkt in bepaalde browsers?

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!