Toon posts:

waarde doorgeven van php naar javascript

Pagina: 1
Acties:

Onderwerpen


Anoniem: 73017

Topicstarter
Hallo,

Ik stoei al een avond met het volgende probleem: ik wil een waarde die op een bepaalde php pagina aanmaak, doorgeven naar een javascript pagina. Maar op eea manier lijkt dit niet te werken> een voorbeeld:

<?php $myvar=10; ?>

<script type="text/javascript">
jsvar = <?php echo $myvar; ?>;
document.write(jsvar); // kijken of we een 10 krijgen.
</script>

Maar nu vermoed ik, omdat ik met losse files werk, dit niet werk. Als ik dit draai, dan krijg ik de volgende melding (via de console in chrome)

Uncaught SyntaxError: Unexpected token <

Ook de myvar in de PHP declareren als een global mag niet helpen.
iemand nog tips hoe dit aan te pakken?

(doel is om a.d.h. van de waarde te weten welke functie aangeroepen moet worden in de javascript file)

  • Cartman!
  • Registratie: April 2000
  • Niet online
Heb je al iets geprobeerd? Bekijk je bron eens, wat staat er dan in je html?

  • Wiethoofd
  • Registratie: Juli 2007
  • Laatst online: 22-05 18:43
Je wilt .php laten echoën in een .js file? Dat gaat dus niet lukken zonder de juiste headers uit te sturen om een .php zich als javascript voor te laten doen.

Wiethoofds meuk en 'overige'


  • Caelorum
  • Registratie: April 2005
  • Laatst online: 12:52
Wiethoofd schreef op zaterdag 04 juni 2011 @ 11:53:
Je wilt .php laten echoën in een .js file? Dat gaat dus niet lukken zonder de juiste headers uit te sturen om een .php zich als javascript voor te laten doen.
Wat er hier waarchijnlijk gebeurt is dat de webserver ziet dat het een .js bestand is en dus niet de php runtime eroverheen gooit. Het bestand wordt dus geleverd as-is met alel syntaxfouten naar de client.
Je moet er dus voor zorgen dat de php-runtime eroverheen wordt gegooid.

Wat Wiethoofd bedoelt (denk ik) is dat je een .php bestand aanmaakt die een js bestand met alle bijbehorende headers teruggeeft.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-05 17:03

NMe

Quia Ego Sic Dico.

Wiethoofd schreef op zaterdag 04 juni 2011 @ 11:53:
Je wilt .php laten echoën in een .js file? Dat gaat dus niet lukken zonder de juiste headers uit te sturen om een .php zich als javascript voor te laten doen.
Dat heeft niks met headers te maken. Dat heeft te maken met een webserver die niet ingesteld is om .js files als PHP te parsen. Caelorum geeft wel de oplossing.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Wiethoofd
  • Registratie: Juli 2007
  • Laatst online: 22-05 18:43
Caelorum schreef op zaterdag 04 juni 2011 @ 11:56:
Wat Wiethoofd bedoelt (denk ik) is dat je een .php bestand aanmaakt die een js bestand met alle bijbehorende headers teruggeeft.
Gewoon een .php file maken en de volgende header er in (naast de caching headers)
PHP:
1
header("Content-type: text/javascript");

Wiethoofds meuk en 'overige'


  • Cartman!
  • Registratie: April 2000
  • Niet online
NMe schreef op zaterdag 04 juni 2011 @ 11:59:
[...]

Dat heeft niks met headers te maken. Dat heeft te maken met een webserver die niet ingesteld is om .js files als PHP te parsen. Caelorum geeft wel de oplossing.
Jawel, als jij een .php file inlaad als JS dan zal die niet werken totdat je meestuurt in de headers dat het een JS file is. Dat bedoelt hij te zeggen :)

  • ieperlingetje
  • Registratie: September 2007
  • Laatst online: 19-04 20:29
headers meesturen is niet nodig omdat je in je html al dit zet: <script type="text/javascript">

Anoniem: 26306

ieperlingetje schreef op zaterdag 04 juni 2011 @ 12:51:
headers meesturen is niet nodig omdat je in je html al dit zet: <script type="text/javascript">
Wees daar niet te zeker van. In je HTML is het slechts een hint dat wordt verwacht dat de content-type "text/javascript" zal zijn. Een user agent die geen "text/javascript" begrijpt zal dus bij voorbaat niet hoeven proberen het bestand te downloaden.

De daadwerkelijke content-type wordt bepaald door de HTTP headers. Als die anders zijn dan waarmee de user agent overweg kan, kan de user agent het dus weleens compleet negeren, ook al zegt de HTML dat het text/javascript moet zijn. Als het dat niet is, en het is ook niet compatible, heeft de user agent alle reden om de content te negeren.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Goed, oftewel de inkoppertjes:
1. PHP moet je door je server laten uitvoeren
2. Je moet gewoon altijd je best doen om alle relevante HTTP headers te versturen.

{signature}


  • Pyr0wl
  • Registratie: Juli 2010
  • Laatst online: 01-02 10:39
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
$waarde = "Meh.";

function getBodyContent() {
    global $waarde;
    
    echo "<script language=\"javascript\" type=\"text/javascript\">
            showValue(\"".$waarde."\");
         </script>";
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <script type="text/javascript">
            function showValue(value) {
                alert(value);
            }
        </script>
    </head>
    <body>
        
        <?php
        getBodyContent();
        ?>
        
    </body>
</html>


Ik denk dat dit hetgene is dat je zoekt? Bij het interpreteren van het PHP script wordt de value ingevuld in het stukje HTML en als de webbrowser de HTML dan rendert, zal er een call naar de javascript functie showValue gedaan met de waarde van uit het PHP script als parameter. Dit is eigenlijk in grote lijnen wat jij al eerder deed, enkel wordt er nu een javascript functie tussen gegooid, op die manier kan je gebruik maken van externe javascript bestandjes.

Wat je ook kan doen is het volgende:

PHP:
1
2
3
4
5
6
<?php
header("Content-type: text/javascript");
$waarde = 10;
?>

alert(<?php echo $waarde; ?>);


HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <script src="fancyjs.php" type="text/javascript"></script>
    
    </head>
    <body>
        
        
    </body>
</html>


In de script tag, waar je een extern javascript bestand mee kunt includen, geef je het PHP bestand in kwestie aan als source. Als de browser de HTML pagina dan rendert, zal deze een GET request doen naar dat PHP bestand, de server zal dit PHP bestand interpreteren en door aan te geven in die header dat het uiteindelijk gaat om javascript, zal de browser dit ook uitvoeren als javascript.

Als je het echt heel dynamisch wil maken kan je ook werken met het XMLHttpRequest Object, waarmee je een connectie maakt naar een PHP pagina die vervolgens gewoon een waarde terugstuurt. Hier komt echter wel wat meer werk bij kijken en is, afhankelijk van de situatie, misschien zelfs overkill :P

Acties:
  • 0Henk 'm!

Anoniem: 73017

Topicstarter
Iedereen,

bedankt voor alle feedback zover, _/-\o_ I ga ermee aan de slag. Laat dan nog wel weten of het lukt!
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee