Avatar billede albertvanharten Nybegynder
05. januar 2007 - 00:46 Der er 8 kommentarer og
1 løsning

Export fra PHP til Javascript eller HTML eller hvad som helst

Davs...

Jeg prøver at lave et weblog, som generer en output der kan bruges i ens egen hjemmeside, uden at man behøver have support for en server-side programsprog som f.eks. PHP.
OK, det lyder meget mystisk. Jeg skal prøve forklare:

Jeg har en weblog (som jeg er i gang med at lave, den er langt fra færdig; prøv bare på http://blog.franl.dk og opret en account og en weblog, og læg nogle beskeder ind).

Efter man har lavet en besked i sin weblog, er det meningen at man skal kunne publicere en liste af beskeder (titler), en bestemt besked, eller andre variabele information i sin egen hjemmeside, uden brug af PHP, men kun client-side-webprogramming (Javascript, VBScript for min skyld, HTML).

Lige nu har jeg det sådan, at man kan importere nogle variabler fra weblog'en ind i javascript. Prøv bare at lave en HTML fil med følgende inhold:

<script type="text/javascript" src="http://blog.franl.dk/command.php?bID=3&action=displayname"></script>
<script language="Javascript">
var weblogname = reply;
alert(weblogname);
</script>

Den giver en alert-box med navnet på weblog'en nr. 3, og dens værdi lægges også fast i Javascript-variablen "weblogname".

Hvis man nu vil fastlægge antal beskeder i samme weblog, udvider man HTML filen med:

<script type="text/javascript" src="http://blog.franl.dk/command.php?bID=3&action=msgscount"></script>
<script language="Javascript">
var msgscount = reply;
alert(weblogname);
</script>

Altså: man henviser til command.php på weblog-serveren, og giver som parametre bID (Blog-ID'en) og en "action", som er f.eks. msgscount (antal beskeder i blog'en), displayname (vis navnet), titlebyid (viser titlen på en besked, bruges i kombination med mID, hvilken er Message ID), og messagebyid (viser indholdet på en besked, bruges også i kombination med mID). command.php giver en output i Javascript, i en variabele der hedder "reply". Den variabele kan man vha. Javascript fastlægges en anden variabele. Altså kan man finde ud af hvad hver enkelte besked hedder (command.php?bID=3&action=titlebyid&mID=1 giver navnet på besked 1 i Blog 3). Men problemet er, at jeg ikke kan få ALLE titler på beskederne i en array i Javascript, fra en ekstern resource (command.php).

Nogen der har en idé?

Albert van Harten
Avatar billede coderdk Praktikant
05. januar 2007 - 02:08 #1
Hmm, er det ikke bare at outputte:

var reply = new Array( "Noget", "Noget andet" );

Desuden skal command.php nok lige sende:

header( "Content-Type: text/javascript" );

Lige nu sender du text/html
Avatar billede albertvanharten Nybegynder
05. januar 2007 - 22:25 #2
@coderdk
Takker.
Det er selvfølgelig muligt at lave en array, men hvad nu hvis man har 50 beskeder i sin weblog, med en gennemsnitlig titellængde på 50 tegn, så tror jeg ikke at det kommer igennem fra command.php til javascriptet, man kan sende et bestemt antal tegn (mener det var 1984 tegn).

Det med Content Type er nok rigtigt, det skal jeg lige tilføje.

Albert
Avatar billede coderdk Praktikant
06. januar 2007 - 03:01 #3
Alternativt kunne du bruge noget primitivt... Respons:

var num = 3;
var reply1 = "Noget";
var reply2 = "Noget andet";
var reply3 = "Noget tredje";

Men hvorfor skulle der kun komme 1984 tegn igennem? Jeg bruger en lignende metode på et andet site, og der fylder outputtet af php-scriptet (som jo laver et javascript) en 10-20 KB... Der er ikke nogen begrænsning ;)
Avatar billede albertvanharten Nybegynder
06. januar 2007 - 17:20 #4
Hmm, jeg var sikker på at jeg har klikket på "Send", men åbenbart ikke. Så skriver jeg på ny...

@coderdk
Det kunne jeg gøre selvfølgelig, men hvis der skulle være den der begrænsning på antallet af tegn, så gør det ingen forskel, om jeg nu bruger en stor bunke af variabler, eller bare en array.
Men hvis du siger, at der ikke er en begrænsning, og at man bare kan sende så meget som man vil, så gør jeg det.
Jeg har lige undersøgt lidt med de der tegn, og der står at INTERNET EXPLORER (ved ikke om det er en RFC-regel, eller om det er noget Microsoft har fundet på) har en begrænsning på 2083 tegn, når man bruger POST- eller GET-metoden i en FORM. Men dette her er ingen af delene, og når du siger at du sender output fra PHP på 10-20 KB, så må det også virke for mig... Jeg prøver om det virker, og melder ud her på eksperten om det virker. Hvis det virker, så må du gerne sende et SVAR (i stedet for KOMMENTAR), så kan du få dine point :)

Albert
Avatar billede coderdk Praktikant
06. januar 2007 - 17:23 #5
hehe ok, det er korrekt at der er en begrænsning i GET (altså URL'en), men ikke for POST... Men outputtet fra command.php er jo hverken GET eller POST, det er respons til en GET... Så der burde ikke være nogen ko på isen :)
Avatar billede albertvanharten Nybegynder
07. januar 2007 - 13:58 #6
Du har ret, det virker fint... Jeg har bare ikke testet hvad der sker med 1000 titler, men det skal nok virke, mener jeg.
Har du tilfældigvis en løsning på dette:
http://www.vanharten.dk viser nu (kl. 13:53) 4 beskeder. Når man klikker på en af beskederne, så åbner den viewmsg.html med parameter msg= og så en variable.
I viewmsg.html har jeg bl.a. følgende:
<script type="text/javascript" src="http://blog.franl.dk/command.php?bID=3&action=titlebyid&mID=4"></script>

mID er Message ID, men den er nu statisk, og kommer derfor aldrig til at virke, medmindre man kun vil se besked 4 ;)
Hvordan gør jeg sourcen dynamisk? Jeg vil kun bruge client-side scripting, da alle og enhver skal have en mulighed for at benytte weblog'et.

Albert
Avatar billede albertvanharten Nybegynder
07. januar 2007 - 15:14 #7
@coderdk
Pyt, har fundet det:

<script language="JavaScript"><!--
var file = 'http://blog.franl.dk/command.php?bID=3&action=titlebyid&mID='+msgtoview;
//--></script>

<script language="JavaScript" type="text/javascript"><!--
document.write('<script src="' + file + '"><\/script>');
//--></script>
Avatar billede albertvanharten Nybegynder
07. januar 2007 - 16:11 #8
Har iøvrigt også testet det med 269 titler, pas de problème... Tusind tak for hjælpen.

Albert
Avatar billede coderdk Praktikant
07. januar 2007 - 18:54 #9
Så lidt :)
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