04. april 2011 - 21:41Der er
19 kommentarer og 3 løsninger
Ændring til eksternt javascript med php
Hej,
Jeg har en php-side, med bla. nedenstående javascript. Formålet er at man kan bladre, altså øge eller mindske variablen nr ved tryk på + eller -. Men jeg skal have rykket scriptet i et eksternt javascript-dokument - hvordan gør jeg det?
Tak for forslaget, men jeg har måske ikke været præcis nok i min formulering.
Jeg har en php-side som viser et billede, for at se næste eller forrige billede trykkes + eller - som ændrer variablen nr.
Det er foreløbig løst med ovennævnte script, som ikke er optimalt.
Hvis jeg skal have noget javascript kode som kan bladre på php-siden - hvordan gør jeg det? javascriptet skal være i en ekstern .js-fil og kaldes med <script type="text/javascript" src=""></script> i selve php-filen.
Jeg kan jo desværre ikke bare kopiere mit foreløbige script over i en js-fil pga. php-koden i scriptet.
ved ikke hvordan du bruger den men f.eks. $url = $_SERVER['PHP_SELF']; $nr = $_GET['nr']; $artID = 1; $author = NULL; onload="goTo(<?php echo $url?>, <?php echo $nr; ?>, <?php echo $artID; ?>, <?php echo $author; ?>);"
Der er ingen grund til at rewrite noget. En importeret JS-fil kan sagtens have en anden extension - f.eks. .asp, .aspx, .php, .jsp, etc. Til gengæld bør du indlede PHP dokumentet med at sætte en passende header:
ronols: det var hele javascriptet jeg ønsker i eksternt js-dokument, så det er desværre ikke hele løsningen.
kdjweb: jeg har function goTo(url, nr, artID, author, event) { if(event.keyCode == 109) location = url+"?nr="+(nr-1)+"&artikel_id="+artID+"&forfat="+author; if(event.keyCode == 107) location = url+"?nr="+(nr+1)+"&artikel_id="+artID+"&forfat="+author; } if(document.attachEvent) document.attachEvent("onkeyup", goTo); else document.addEventListener("keyup", goTo, false); i en ekstern .js-fil, $url, $nr, $artID og $author i php-filen. Men så skal onload vel i .js-filel, ikke? Det giver mit oprindelige problem: der kan ikke indsættes php-kode i en .js-fil.
En browser ser på et dokuments header for at afgøre, hvilken type dokument der er tale om, og hvad den skal stille op med det. Normalt er serveren sat til at serve PHP-dokumenter (eller ASP, ASPX, JSP) som HTML, hvorfor browseren behandler dem som sådan. De bliver sendt med text/html
Den er også sat til at serve JS-dokumenter som text/javascript og CSS-dokumenter som text/css. Derfor behandler browseren dem, som den gør. Det handler med andre ord ikke om fil extension, men om Content-Type (eller MIME-Type)
olebole: tak for dine kommentarer - det var jeg ikke klar over.
Jeg har nu ændret min tidl. .js-fil til js.php med header. Derefter forsøgte jeg med mit oprindelige script - uden held. Ved tryk på + får jeg vist js.php. Herefter forsøgte jeg med kdjweb og ronols bidrag - ligeledes uden held. Når jeg trykker + sker intet.
@olebole: hvordan får du parset $en_delstreng fra index til din_jsfil.php ??, jeg får ikke udskrevet variablen med mindre jeg ligger den over i din_jsfil.php
ronols >> Det er da vist skrevet på et meget søvningt tidspunkt - for det kan man naturligvis ikke. Til gengæld kan du overføre GET-variabler gennem en querystreng ved importen af JS/PHP-filen:
Aha, oleboles sidste kommentar fik mig til at tænke løsningen. Jeg sendte variablerne med i querystrengen fra php-siden til js-siden og satte dem i location og ændrede PHP_SELF i mit oprindelige script. Det virker!
Jeg er lidt i tvivl om hvordan jeg skal fordele point. Det var egentlig oleboles kommentarer der i det væsentligste førte til løsningen, men ronols og kdjwebs forslag var som sådan ikke forkerte. Jeg foreslår pointfordeing: olebole 14, ronols 8 og kdjweb 8.
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.