05. juli 2007 - 10:09Der er
17 kommentarer og 1 løsning
php i javaScript
Hej hvordan kan jeg bruge en php variabel i JS?
Min php kode ser såadan ud: <?php function num_files($directory='.') { return count(glob($directory."/../images/stor/*")); } print"Antal filer i mappen: "; echo num_files(); ?>
og jeg kunne godt tænke mig at bruge num_files() værdien nede i mit JavaScript
<script type="text/JavaScript"> var numFiles = ???;
i og med php er noget der foregår på serveren og javascript er noget der foegår hos klienten (i din browser) så er du nød til at udskrive javascripten med phpén
- og det var vist ikke særlig klar tale. Der skulle have stået: "- men der skal ikke gåseøjne om variablen. Ellers tror JS, der er tale om en streng ... ikke et tal =) "
Hej Snap Dit eksempel virker fint. Jeg kan bare ikke forstå hvad det er jeg har gjort galt, for det var min idé at skrive det på denne måde, men jeg kunne bare ikke få det til at virke. Men nu virker det fint med dit eksempel. Du henter bare point og så sammeligner jeg lige vores eksempler :-)
Ja du nåede selv lige at komme med et ligende eksempel som mit nogen sek før jeg postede første gang. Det du mangler i dit er gåseøjnene omkring <?php $output ?> samt tilføje echo til strengen! :)
Men glad for at høre du fik det til at virke fra mit eksempel! :)
Selvfølgelig kender jeg forskellen på String og Integer. Men for at assigne php-variablen til javascript variablen er det nødvendigt med gåseøjne omkring, ellers virker det ikke og derfor jeg kalder det vitalt!? Hvis han så senere skal bruge variablen som en Integer må han benytte parseInt().
(Og jeg er så træt af din ofte arrogante og angribende fremtræden. Synes det ærgeligt du skriver sådan, specielt når du sidder inde med så meget viden om javascript)
<script type="text/JavaScript"> var num = <?=$num?>; // Tal var num2 = '<?=$num?>'; // Streng
alert(num + 5); // skal returnere noget andet end 10, hvis jeg er arrogant alert(num2 + 5); // skal returnere noget andet end 55, hvis jeg er arrogant </script>
Nu, da vi har fundet ud af, jeg ikke har opført mig arrogant i denne tråd, hvad synes du så, vi skal kalde dig? =)
Tjah ok, var ikke klar over man kunne assigne variable fra php til javascript med <?= $v ?> i stedet for '<?php echo $v; ?>'. Det er jo super (godt fundet), så behøver man ikke bruge parseInt() hvis man vil have det som en Integer...
PHP assigner intet til JavaScript ... det er en misforståelse.
PHP udskriver indhold i form af tekst. Dette foregår på serveren - og om PHP udskriver tekst (herunder tal) mellem et par script-tags eller ej, er fuldstændig ligemeget ... det er blot tegn i en virtuel fil af typen text/html. Når 'filen' forlader serveren, har PHP intet med den at gøre længere.
Når 'filen' efterfølgende rammer browseren, har denne ikke kinamands chance for at vide, om et bestemt tegn i 'filen' er skrevet af dig - eller af PHP ... og den er da også rystende ligeglad :) Derfor har JavaScript-fortolkeren heller ikke forbehold overfor noget, der er udskrevet af PHP.
Det har med andre ord intet at sige, hvordan du udskriver et tegn/bogstav/tal med PHP ... bare du udskriver det. At jeg brugte PHP's shorthand syntaks, var et rent tilfælde. Jeg kunne ligeså godt have valgt at bruge print eller echo. De 'vitale' gåseøjne er under alle omstændigheder fuldstændig overflødige.
I det lys er det (undskyld udtrykket) tåbeligt, aktivt at ændre en JS-variabels type fra integer til string - og senere lade JS ændre den tilbage igen. Nu er JS godtnok et svagt typed sprog, men principielt er det vitalt at undlade den slags ... med mindre, der er en rigtig god, specifik årsag.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.