|
| Kan man i JavaScript læse data fra en fil? Fra : Bertel Lund Hansen |
Dato : 12-12-09 12:58 |
|
Hej alle
Jeg har nogle data som skal bruges af både JavaScript og PHP. Det
vil være den mest stabile løsnig at de kun står ét sted. Derfor
vil jeg gerne kunne inkludere dem i JS eller hente dem på anden
måde.
Kan jeg f.eks. oprette et array i JS ved at læse en fil hvor
nogle navne stå på hver linje?
Det kunne måske også løses ved noget include, men array-formatet
er jo ikke ens i PHP og JS.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Frank Damgaard (12-12-2009)
| Kommentar Fra : Frank Damgaard |
Dato : 12-12-09 13:12 |
| | |
Stig Johansen (12-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 12-12-09 13:24 |
|
Bertel Lund Hansen wrote:
> Jeg har nogle data som skal bruges af både JavaScript og PHP. Det
> vil være den mest stabile løsnig at de kun står ét sted. Derfor
> vil jeg gerne kunne inkludere dem i JS eller hente dem på anden
> måde.
>
> Kan jeg f.eks. oprette et array i JS ved at læse en fil hvor
> nogle navne stå på hver linje?
Alt kan lade sig gøre i en gasovn ;)
Men du kommer nok til at uddybe lidt mere hvad du er ude på.
(Navneliste ?, format ?, præsentation ?)
Vha Ajax kan du hente 'filer' fra serveren, enten som flade filer, eller ved
kald til PHP (som inkluderer filen).
I mit notes bruger jeg Ajax til 'quickview', og almindeligt kald til
serveren ved 'show note'.
Hvis du kigger på det her eksempel:
< http://w-o-p-r.dk/notes/show.base.asp?d=hjemmesideskolen_php&v=Steps>
så er det reelt det samme indhold (fra samme URL), der bliver vist ved klik
på hhv. 'quickview' og 'shownote'.
Forskellen (som) ikke er tydelig, er, at ved kald via Ajax, tilføjes en
parameter (q=yes), som gør at det kun er substansen, der sendes.
Er 'q' ikke sat til yes, hentes den fulde side incl headers og styles.
Jeg ved ikke om det er noget i den stil du er ude efter, men budskabet er,
at samme indhold kan serveres på forskellige måder i samme PHP (eller ASP)
fil.
--
Med venlig hilsen
Stig Johansen
| |
Bertel Lund Hansen (12-12-2009)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 12-12-09 16:36 |
|
Stig Johansen skrev:
> Men du kommer nok til at uddybe lidt mere hvad du er ude på.
> (Navneliste ?, format ?, præsentation ?)
Jeg skal lave en side med mailadresser. De skal camoufleres med
'din' opskrift (du ved: '#@'). Det skal gøres med JS, men siderne
sættes op med PHP. PHP skal skrive id'erne i HTML-koden, og JS
skal bruge de samme id'er i koden.
Jeg har derfor brug for et array i begge sprog, og det skal
indeholde de samme brugernavne:
PHP:
$user=array('arne', 'børge','carl');
JS:
var user=['arne', 'børge','carl']
Jeg vil nødig skrive de samme værdier i to forskellige filer, for
det giver mulighed for fejl. Jeg kan f.eks. lave en tekstfil:
arne
børge
carl
Hvordan kan jeg evt. læse den i JS?
Jeg er ikke interesseret i at kaste et monsterværk på hjemmesiden
for at løse problemet.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Birger Sørensen (12-12-2009)
| Kommentar Fra : Birger Sørensen |
Dato : 12-12-09 16:45 |
|
Bertel Lund Hansen har bragt dette til verden:
> Stig Johansen skrev:
>
>> Men du kommer nok til at uddybe lidt mere hvad du er ude på.
>> (Navneliste ?, format ?, præsentation ?)
>
> Jeg skal lave en side med mailadresser. De skal camoufleres med
> 'din' opskrift (du ved: '#@'). Det skal gøres med JS, men siderne
> sættes op med PHP. PHP skal skrive id'erne i HTML-koden, og JS
> skal bruge de samme id'er i koden.
>
> Jeg har derfor brug for et array i begge sprog, og det skal
> indeholde de samme brugernavne:
>
> PHP:
> $user=array('arne', 'børge','carl');
>
> JS:
> var user=['arne', 'børge','carl']
>
> Jeg vil nødig skrive de samme værdier i to forskellige filer, for
> det giver mulighed for fejl. Jeg kan f.eks. lave en tekstfil:
>
> arne
> børge
> carl
>
> Hvordan kan jeg evt. læse den i JS?
>
> Jeg er ikke interesseret i at kaste et monsterværk på hjemmesiden
> for at løse problemet.
Man kan ikke læse filer med js.
Js er på clientside - din fil er serverside.
Den eneste mulighed du har, er enten at pakke det ind med php i
indexfilen, eller at hente den med ajax.
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
| |
Bertel Lund Hansen (12-12-2009)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 12-12-09 16:48 |
|
Birger Sørensen skrev:
> Man kan ikke læse filer med js.
> Js er på clientside - din fil er serverside.
Det er da også rigtigt.
> Den eneste mulighed du har, er enten at pakke det ind med php i
> indexfilen, eller at hente den med ajax.
Okay. Så går jeg en lidt anden vej: Jeg lader PHP pille navnene
ud af JS-filen.
Tak for kommentarerne.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Frank Damgaard (12-12-2009)
| Kommentar Fra : Frank Damgaard |
Dato : 12-12-09 18:50 |
|
Bertel Lund Hansen wrote:
> Stig Johansen skrev:
>
>> Men du kommer nok til at uddybe lidt mere hvad du er ude på.
>> (Navneliste ?, format ?, præsentation ?)
>
> Jeg skal lave en side med mailadresser. De skal camoufleres med
> 'din' opskrift (du ved: '#@'). Det skal gøres med JS, men siderne
> sættes op med PHP. PHP skal skrive id'erne i HTML-koden, og JS
> skal bruge de samme id'er i koden.
>
> Jeg har derfor brug for et array i begge sprog, og det skal
> indeholde de samme brugernavne:
hvorfor ikke bare lade php spytte koden ud med færdig html og javascript?
der er vel ingen grund til at hente alle mailadresser fra en fil?
jeg bruger i øvrigt nogen gange at URL encode emailadresse, og så bruge
javascript til at trylle det frem igen.
mailadresse bliver så f.eks:
urlhex="%33%27%34%3B%3E%0A%3B%30%22%26%15%38%3C%39%25%30%3B%21%7B%31%3E"
og man kan sikkert finde på flere sjove "obscurity" løsninger ;)
| |
Bertel Lund Hansen (12-12-2009)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 12-12-09 21:18 |
|
Frank Damgaard skrev:
> hvorfor ikke bare lade php spytte koden ud med færdig html og javascript?
Fordi JavaScriptet ligger i en separat fil. Det bruges tilo
beskyttelse af mailadresser, og metoden er så smart at det er ret
svært at finde ud af hvad adresserne er - samtidig med at en
bruger slet ikke opdager at de ikke er lavet helt almindeligt.
Ved at adskille HTML og JavaScript opnår man et ekstra lag
beskyttelse.
Derudover ville det ikke blive lettere ved at laves i én fil. Om
jeg i PHP skal opbygge en linje der opretter et array i JS, eller
om jeg skal trække brugernavnene ud af en JS-fil med en
array-linje, det kommer ud på ét.
> der er vel ingen grund til at hente alle mailadresser fra en fil?
Elementer der skal bruges mange steder, skriver jeg helst kun ét
sted, og da der vil komme nye brugernavne til, ville det have
været praktisk kun at skulle redigere en tekstfil med data.
Nu skal jeg så redigere JS-filen i stedet. Det er okay.
> og man kan sikkert finde på flere sjove "obscurity" løsninger ;)
Du kan jo kikke på min HTML-løsning. Metoden har Stig Johansen
hittet på.
<li><b><a id='bertel.lund.hansen' href='#@'>Bertel Lund
Hansen</a></b></li><li>Tlf.: 61 70 32 41 </li>
Når man kikker på siden, står der et normalt mailtolink med min
rigtige adresse lige klar til brug ved et klik.
I får ingen link, for det er ikke en offentlig side.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Stig Johansen (13-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 13-12-09 02:01 |
|
Bertel Lund Hansen wrote:
> Derudover ville det ikke blive lettere ved at laves i én fil. Om
> jeg i PHP skal opbygge en linje der opretter et array i JS, eller
> om jeg skal trække brugernavnene ud af en JS-fil med en
> array-linje, det kommer ud på ét.
Det behøver vel ikke nødvendigvis at være defineret som et array ?
Hvis du i toppen af JS filen skriver f.eks:
var mailadresser='arne/domænd.tld,børge/andet.tld,carl/tredje.tld' ;
Så kan du bruge strengen i både JS og PHP med en split.
Dvs. f.eks i JS:
var mailadresserArray = mailadresser.split(',') ;
Så har du et array - se senere..
> <li><b><a id='bertel.lund.hansen' href='#@'>Bertel Lund
> Hansen</a></b></li><li>Tlf.: 61 70 32 41 </li>
Hvis du så navngiver dine ID'ere med f.eks. M0,M1,M2..
så kan du loope over mailadresserne med noget a la:
for (var i=0; i< mailadresserArray.length; i++ ){
var element=document.getElementById('M'+i);
substitutehref(element,mailadresserArray[i]);
}
function substitutehref(element,mailadresse) {
var address = mailadresse.split('/')[0];
var domain = mailadresse.split('/')[1];
var msub = element.href.substring(mail.href.indexOf('#')+1) ;
element.href='mailto:'+address + msub + domain ;
}
--
Med venlig hilsen
Stig Johansen
| |
Bertel Lund Hansen (13-12-2009)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 13-12-09 15:46 |
|
Stig Johansen skrev:
> Det behøver vel ikke nødvendigvis at være defineret som et array ?
Næ, der er forskellige muligheder.
> Hvis du i toppen af JS filen skriver f.eks:
> var mailadresser='arne/domænd.tld,børge/andet.tld,carl/tredje.tld' ;
Ja, men lige nu har jeg:
var users=['arne','benny','carl']
og efter en PHP-split skal jeg bare have hvert andet element.
> Hvis du så navngiver dine ID'ere med f.eks. M0,M1,M2..
Jeg bruger brugernavnet til id. Det er logisk og overskueligt. Og
så looper jeg internt i JS-funktionen.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
|
|