Avatar billede jakobsen Nybegynder
03. august 2006 - 22:10 Der er 19 kommentarer og
1 løsning

fra php til javascript

hej

jeg har en php side med en textstreg

$hest = "yes";

som jeg gerne vil have ind i en .js fil,
hvordan gør man det?
Avatar billede Slettet bruger
03. august 2006 - 22:30 #1
Du har vel lavet din kald i funktioner i din .js fil?!
For så kan du, når du laver et kald på en af dine funktioner have et parameter med som netop indholder din tekst streng.

F.eks. hvis du har en javascript funktion
visAlert(text) {
  alert(text);
}
<PHP
  $hest = "yes";
?>
<a href="#" onClcik="visAlert('<?PHP echo $hest; ?>');">Klik her</a>
Avatar billede jakobsen Nybegynder
03. august 2006 - 22:38 #2
øhm ik med? visAlert skal jeg skrive i JS filen ?
Avatar billede mclemens Nybegynder
03. august 2006 - 22:46 #3
eller du kan have en skjult div som her:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
#phpset{height:20px;overflow:hidden;position:absolute;top:-20px;}
</style>

<script type="text/javascript">
window.onload=function(){
hest=document.getElementById("phpset").childNodes[0].nodeValue;
alert(hest);
}
</script>

</head><body>


<div id="phpset">yes</div></body></html>




... og så variere dit php output ...
scriptet skal så blot over i din js fil...
Avatar billede mclemens Nybegynder
03. august 2006 - 22:47 #4
[ øhm ik med? visAlert skal jeg skrive i JS filen ? ]

Php er server , js er clientside ... for at de to kan kommunikere skal
du enten have dit script inline i dokumentet eller sætte noget ind i et felt som du kan indlæse onload via. js...
Avatar billede mclemens Nybegynder
03. august 2006 - 23:10 #5
Er alternativt script hvis du er kan håndtere objecter:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
#phpset{height:20px;overflow:hidden;position:absolute;top:-20px;}
</style>

<script type="text/javascript">

var objs={}; /* global object til opbevaring af dokument variabler... */

window.onload=function(){
  vars=document.getElementById("phpset").childNodes[0].nodeValue;
  vars=vars.split("[;]");

  for(i=0;i<vars.length;i++){
    tmp=vars[i].split("[,]");
    objs[tmp[0]]=tmp[1];
  }
  andenfunktion();
}

function andenfunktion(){ // test om variabler er tilgængelige
  for(i in objs){
    alert("objs."+i+"=\""+objs[i]+"\"");
  }
}

</script>

</head><body>


<div id="phpset">hest[,]yes[;]sko[,]niks</div></body></html>
Avatar billede mclemens Nybegynder
03. august 2006 - 23:11 #6
- Du kan pille ved skabelonen og så overføre almindelige variabler via. eval() så variablen er tilgængelig, men den vil dog kun være midlertidig -> den vil ikke være global.
Avatar billede mclemens Nybegynder
03. august 2006 - 23:19 #7
Det var en måde at overføre variabler :o)

(man kan selvfølgelig også laves via. url'en
eller via cookies, ulempen på det er url'en
ser grim ud, og script kravet er det samme
- ulempen ved cookies er at du skal sætte
cookien hver gang og modtage cookien hver
gang browseren skal have en ny side og
du skal stadig bruge en variabel "konverter"
eller hvad vi nu skal kalde sådan en fidus.)
Avatar billede mclemens Nybegynder
03. august 2006 - 23:23 #8
Hvis en overførsel af en enkelt opkald til en funktion med en outputtet variabel som du så vil bruge via scriptet VisAlert som en midlertidig variabel - matcher op med dit behov: Så afvis dette svar og bed coldgate om at lægge et istedet (jeg hopper snart i seng så kastede lige et svar for at du ikke skulle vente på mig afhængig af behovet)
Avatar billede jakobsen Nybegynder
04. august 2006 - 20:31 #9
AH! jeg så forkert, jeg har noget i en

$hest = "nemli"

og i en <script language="javascript" src="mitjava.js"></script>

i mitjava.js er der en url som jeg gerne vil have tilføjet $hest,
er det ikke noget med man kan skrive

String hest = $hest;

og kalde det i js med :

var hest = " <%=hest%> ";

men jeg synes ik det virker
Avatar billede mclemens Nybegynder
04. august 2006 - 21:11 #10
Kan du uddybe hvad du forsøger på?
Som ejg siger er der flere måder at overføre en variabel
på - de 2 viste f.eks. og så en der aflæser get værdier
fra documentets url (og så selvfølgelig en der aflæser
fra et input felt på siden istedet for den div o.s.v.)

- Men man kan ikke i ens document skrive:
$hest="nemli" ... string hest=$nemli;
og så kalde det i js med var hest="<%=hest%>";

- Du kan ikke overføre en variabel direkte fra et document over i en anden fil det er serverside og clientside - de kommunikerer ikke med hinanden... man kan selvfølgelig når man outputter <script language="javascript" src="mitjava.js"></script> skrive f.eks. echo"<script language=\"javascript\" src=\"mitjava.php?$variabler\"></script>"; og så have et php script der outputter js koden afhængig af hvad der står som variabel - ellers så kan man overføre variabler som jeg nævner ...


- Du kan godt tilføje værdien af hest til noget med den i 03/08-2006 23:10:29 eller 03/08-2006 22:46:45 ... men jeg forstår ikke hvad du mener med den url du vil have det tilføjet til? Er det en tekststreng der står i javascriptet eller?


... Jeg tror problemet lægger i at du forsøger på at få php til at kommunikere direkte med din js fil eneste måde at gøre det 100% på er at lave dit javascript inline i head sektionen på hver side - ellers så er det overførsels måden ...
Avatar billede mclemens Nybegynder
04. august 2006 - 21:15 #11
Sagt kort det du skriver i 04/08-2006 20:31:54 giver ingen
logik da documentets php-fil ikke kommunikere med js-dokumentet
eller et evt. js-dokument brugeren har i sin cache...
Ellers giver det ingen logik da det er meget kort...
Avatar billede jakobsen Nybegynder
06. august 2006 - 08:04 #12
hm.. ok.

jeg kommer fra side1.php over til side2.php
fra side1.php får jeg $hest værdien med, som skal bruges i js filen på side2.php

troede man sku lave en String hest =  først før man ku læse dataen i .js filen?
Avatar billede mclemens Nybegynder
06. august 2006 - 10:31 #13
1. Der er i js ikke noget der hedder String hest = ... Du kan køre noget var hest="et eller andet"; eller var hest=123; eller var hest=[]; eller var hest={}; o.s.v. ... Jeg har læst en meget lille smule om c++ forleden dag og tror du blander string tildelinger herfra ind i js - enten det eller også blander du java og javascript sammen. (kender ikke java).

2. Du står på den ene side og php ved at på side2.php skal javascriptet bruge en værdi ala hest="værdien"; så kan du aktivere sessions og gemme værdien i sessionen og så outputte den som i 03/08-2006 23:10:29 eller 03/08-2006 22:46:45 (dog med output fra sessionen istedet.

3. Det er en formular der afsendes som post eller get - så kan du få php til at indskrive variablen som i 03/08-2006 23:10:29 eller 03/08-2006 22:46:45 (dog med output fra $_POST eller $_GET istedet) ... hvis det er en get kan js selvfølgelig også selv samle værdien op fra url'en.

4. Det er et link der trykkes på ... svarer til en formular der afsendes med get - forstået så du kan få php til at indskrive variablen som i 03/08-2006 23:10:29 eller 03/08-2006 22:46:45 (dog med output fra $_GET istedet) ... hvis det er en get kan js selvfølgelig også selv samle værdien op fra url'en - hvis det er bedre.

5. Du mangler nærmere uddybning af hvordan og hvorledes variablen overføres.

[ troede man sku lave en String hest =  først før man ku læse dataen i .js filen? ]

- Normalt skal du definere globale variabler i starten af javascriptet som var hest, hund, sko; o.s.v. men men kan nøjes med at definere et enkelt object globalt som i 03/08-2006 23:10:29 (så forbliver de url variabler / dokument variabler vi har oprettet globale) - eller bruge 03/08-2006 22:46:45 - dog skal du evt. have var hest, hund, sko o.s.v. sat ind og tildele dem i scriptet så de variabler forbliver globale ellers kan du sende dem videre inde i window.onload funktionen der opretter variablerne...

- Hvis du kigger nærmere på 03/08-2006 23:10:29 kan du se at scriptet henter teksten der er outputtet af php i <div id="phpset">hest[,]yes[;]sko[,]niks</div> - og splitter ud og indsætter værdierne i objectet... Så kan du hive variablerne ud og bruge objectet som en stor variabel holder ...
Avatar billede jakobsen Nybegynder
07. august 2006 - 16:00 #14
hmm...

"hvis det er en get kan js selvfølgelig også selv samle værdien op fra url'en."

hvis jeg så smider den via url'en så kan jeg med en get kommando hente data i js ?? korrekt ?
Avatar billede mclemens Nybegynder
07. august 2006 - 16:55 #15
Delvis, hvis du kaster den op i url'en kan du indhente
variablen i dit javascriptet ved at parse url'en onload f.eks..

eks. med object orienteret kodning:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
var _GET={}; /* global object til opbevaring af dokument variabler... */

window.onload=function(){
  vars=window.location.href;
  vars=vars.replace(/\+/g," ").replace(/.*?\?/,"").split("&");
  for(i=0;i<vars.length;i++){
    vars2=vars[i].split("=");
    _GET[unescape(vars2[0])]=unescape(vars2[1]);
    }
  tmpandenfunktion();
}

function tmpandenfunktion(){ // test om variabler er tilgængelige
  for(i in _GET){
    alert("_GET."+i+"=\""+_GET[i]+"\"");
  }

/* Det var udskrift af test variabler her er så et eksempel på et kald: */
alert(_GET['hund']); // alert af hund get værdi...
}
</script>
</dead>
<body>



</head><body>
<form method="get" action="test.html">
<input type="text" name="hest" value="værdi for get hest"><br>
<input type="text" name="hund" value="værdi for get hund"><br>
<input type="submit" value="Afsend">
</form>
</body></html>
Avatar billede mclemens Nybegynder
07. august 2006 - 16:56 #16
_GET er blot noget jeg har valgt at kalde objectet
- det eksisterer jo ikke normalt i javascript ;)
Avatar billede mclemens Nybegynder
08. august 2006 - 21:57 #17
Der gik vist lidt ged i den markupp :D
Slet lige denne del fra ovenstående eksempel:
</dead>
<body>
Avatar billede mclemens Nybegynder
09. august 2006 - 15:08 #18
... Lige en rettelse af ovenstående script...



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
var _GET={}; /* global object til opbevaring af dokument variabler... */

window.onload=function(){
  vars=window.location.href;

  if(vars.indexOf("?")!=-1)vars=vars.replace(/\+/g," ").replace(/.*?\?/,"").split("&");
  else vars=[];

  for(i=0;i<vars.length;i++){
    vars2=vars[i].split("=");
    _GET[unescape(vars2[0])]=unescape(vars2[1]);
    }
  tmpandenfunktion();
}

function tmpandenfunktion(){ // test om variabler er tilgængelige
  for(i in _GET){
    alert("_GET."+i+"=\""+_GET[i]+"\"");
  }




/* Det var udskrift af test variabler her er så et eksempel på et kald: */


alert(_GET['hund']); /* Hvis hund ikke findes får vi undefined */


if(_GET['hest'])alert(_GET['hest']); /* Hvis hest ikke findes får vi intet da den er pakket ind i en if */


}
</script>


</head><body>
<form method="get" action="test.html">
<input type="text" name="hest" value="værdi for get hest"><br>
<input type="text" name="hund" value="værdi for get hund"><br>
<input type="submit" value="Afsend">
</form>
</body></html>
Avatar billede mclemens Nybegynder
22. august 2006 - 17:10 #19
Lukketid / feedback ? ... Alternativet jeg aldrig
fik vist, forudsat at scriptet lægges ind via php er:
( egentlig blot en omformulering af 03/08-2006 22:30:26
fra coldgate ... så hvis du bruger denne
kaster du bare point til Coldgate :) )


<?php $hest="vrinsk"; ?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
var hest="<?php echo $hest; ?>";
alert(hest);
</script>

</head><body>...</body></html>
Avatar billede mclemens Nybegynder
07. november 2006 - 21:59 #20
Tak for point :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester