[PHP/Javascript] PHP aanroepen vanuit een extern JavaScript

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
Ik heb een leuk scroll scriptje, hierin moeten dynamisch (met PHP vanuit MySQL database) een aantal items in verschijnen.

Het JavaScriptje staat in een externe file, dus dit staat in de header van mijn php file:
code:
1
        <script src="scroll.js" type="text/javascript" language="JavaScript"></script>


In scroll.js staat het volgende:
code:
1
2
singletext[0]='blabla1'
singletext[1]='blabla2'

En deze variabelen moeten dynamisch worden gegenereerd. Als ik gewoon een <? echo $var ?> er tussen knal dan werkt dit niet.

Ik heb nog weinig ervaring met de combinatie van JS en PHP, dus excuus als ik vraag naar iets simpels.

edit: de vraag is dus hoe ik dit doe :)

[ Voor 11% gewijzigd door ericck op 23-11-2004 18:18 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Wil je PHP parsen, moet je het het .php-extensie meegeven het het contenttype op Javascript zetten. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Hoe is de data aangeleverd?
Zijn alle variabelen aparte rijen uit de database?
In dat geval kan je het zo doen
PHP:
1
2
3
4
5
6
7
header('Content-type: text/javascript');
$link = mysql_connect(........invullen.......);
$i = 0;
while(list($row) = mysql_fetch_row(mysql_query('SELECT column FROM table'))){
     echo 'singletext['. $i++ .']="'.$row.'";';
}
mysql_close($link);

offtopic:
Het zal vast wel beter kunnen maar zoiets moet werken :P


En dan dit gebruiken om het javascriptje aan te roepen:
<script src="scroll.php" type="text/javascript" language="JavaScript"></script>

[ Voor 34% gewijzigd door Wolfboy op 23-11-2004 18:27 ]

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
De oplossing van Wolfboy is een goede, maar dan moet ik wel eerst PHP kunnen draaien in die externe .js.

Dus scroll.js hernoemen naar scroll.php en dan dat gewoon aanroepen als script?

[ Voor 41% gewijzigd door ericck op 23-11-2004 18:23 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

ericck schreef op dinsdag 23 november 2004 @ 18:22:
De oplossing van Wolfboy is een goede, maar dan moet ik wel eerst PHP kunnen draaien in die externe .js.

Dus scroll.js hernoemen naar scroll.php en dan dat gewoon aanroepen als script?
Ja, en evt. contenttype op Javascript zetten :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
gorgi_19 schreef op dinsdag 23 november 2004 @ 18:25:
[...]

Ja, en evt. contenttype op Javascript zetten :)
Dat doe je toch al door de regel:
code:
1
<script src="scroll.php" type="text/javascript" language="JavaScript"></script>


Of moet je in scroll.php dan nog aangeven dat het om een JS gaat (hoe doe je dat?)?

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

ericck schreef op dinsdag 23 november 2004 @ 18:27:
Of moet je in scroll.php dan nog aangeven dat het om een JS gaat (hoe doe je dat?)?
Zie mijn edit :)

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Je moet de juiste headers goed zetten :) Zie bijvoorbeeld http://lists.evolt.org/ar...-Mon-20041004/165077.html :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
Super! Werkt als een trein, bedankt!

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:52

crisp

Devver

Pixelated

Met PHP een externe javascriptfile genereren is leuk, maar je loopt al snel tegen het probleem aan dat JS clientside gecached wordt en je dynamiek dus weg is, of dat je telkens weer de volledige code moet serveren inclusief het statische deel uit je JS.
Haal gewoon het dynamische deel uit je JS en echo dat tussen inline script-tags, en include gewoon een statisch JS-bestand:
PHP:
1
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
  var singletext = new Array();
<?php

echo 'singletext[0]=\'blabla1\';';
echo 'singletext[1]=\'blabla2\';';

?>
</script>
<script src="scroll.js" type="text/javascript"></script>

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

In dat geval zou ik eerder de html pagina helemaal statisch houden en het js-bestand doormiddel van headers constant laten vernieuwen.
Dat scheelt je toch elke keer de opmaak van het bestand en daarmee redelijk wat bandbreedte.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
Toch nog wat probleempjes.

Dit is de code die ik nu heb:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        <? 
        header('Content-type: text/javascript');  
        $link = mysql_connect ("localhost","----", "----"); 
        mysql_select_db("--------");
        $i = 0; 
        $query = "SELECT naam FROM tabel"; 
        $resultaat = mysql_query($query) or die("error: ".mysql_error()); 
        while( list($row) = mysql_fetch_row($resultaat) )  { 
             echo 'singletext['. $i++ .']="'. $row .'";'; 
        } 
        mysql_close($link); 
        ?>

        <script src="scroll.php" type="text/javascript" language="JavaScript"></script>


De output is:
code:
1
2
3
singletext[0]="Lexa";singletext[1]="Lexa";singletext[2]="Lexa";singletext[3]="Lexa";
singletext[4]="Lexa";singletext[5]="Lexa";singletext[6]="Lexa";singletext[7]="Lexa";
singletext[8]="Lexa"; singletext[9]="Lexa";singletext[10]="Lexa"; enzovoort....

En "Lexa" is het 1e veld uit de kolom 'naam'.
De $i verspringt dus wel steeds met 1, maar het script leest niet de volgende row.
Wat is er aan de hand?

[ Voor 56% gewijzigd door ericck op 24-11-2004 16:19 . Reden: lay-out ]


Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
Het is gelukt. De ge-edite versie hierboven werkt goed.

Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
En toch gaat het mis.... de variabelen uit de PHP worden niet meegenomen naar het JavaScript.
Er worden dus netjes singletext[0], singletext[1] etc. aangemaakt, en deze zijn leesbaar vanuit het php bestand, maar het externe JavaScript (scroll.php) leest ze niet!

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
waarom heeft scroll nog een php extensie als er geen php in zit?

edit: nee, maakt niet uit verder (reactie op post hieronder)

wat voor error krijg je verder? Laat anders een het hele stukje zien (de output dus, inclusief de script tags) en het stukje javascript waarin je de variabelen probeert te gebruiken. Anders kunnen we weinig doen denk ik.

[ Voor 74% gewijzigd door Michali op 24-11-2004 16:42 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
Maakt dat wat uit voor de werking?
Pagina: 1