/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
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

Bertel Lund Hansen wrote:
> 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.

du kan vel lave noget PHP og Javasctript kode der kan læse det
samme dataformat?

en simpel tekstfil som i javasctipt format

Den kan hentes med f.eks. ajax kald og
efterfølgende udføres med "eval(data)" og
variablerne/array tildeles værdi.

I PHP kan der laves en lille parser der piller data ud af filen,
da formaterne jo ikke er kompatibel.


En anden mulighed er at gemme i PHP format, og så have et PHP script
der læser data og skriver dem ud i Javascript format, det burde
være ganske simpelt at lave.


Mere avanceret er at gemme data i XML format og evt. også bruge noget Ajax.
http://www.w3schools.com/Dom/dom_parser.asp
http://articles.sitepoint.com/article/server-side-xml-javascript
http://www.devx.com/xml/Article/11866
http://www.devx.com/xml/Article/11866

Til PHP kan man også finde XML parser.
http://www.w3schools.com/PHP/php_xml_simplexml.asp
http://php.net/manual/en/book.simplexml.php
http://www.ibm.com/developerworks/library/os-xmldomphp/
....


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/

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste