Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Miten käsiksi GET muuttujaan javascriptillä?

Sivun loppuun

Tommo [17.04.2005 13:33:01]

#

Moi!
Mitenköhän javascriptillä pääsisi käsiksi GET-muuttujaan (vai miksiköhän sitä kutsutaan). Jotenkin samaan tapaan kuin php:llä on $_GET[arvo] taulukko..? Entäpä POST-muuttujaan?

Meitsi [17.04.2005 13:39:17]

#

Get:tiin voisi päästä käsiksi lukemalla sen osoitteen perästä... Osoitteen saa muistaakseni: top.location

renni [18.04.2005 21:01:09]

#

Get- ja post-muuttujat lähetetään palvelimelle, miksi niitä pitäisi päästä selaimessa javascriptillä lukemaan?

peran [19.04.2005 18:05:44]

#

Kyllä JavaScriptillä pääsee käsiksi GET-muuttujaan (toimii ilmeisesti vain http:llä (Ei toimi ainakaan Filellä)), mutta ei samaan tapaan kuin php:llä. POST-muuttujaan ei pääse käsiksi, koska se lähetetään serverille.
Jos lähetetään

http://mundomain.fi/javasrt?oma=tekstia+juttuja&toka=1
ja html-tiedostossa on jotain seuraavaa:

<HTML><HEAD><TITLE>Parametrikokeilu</TITLE></HEAD><BODY>
Seuraavanlainen parametri saatiin javascriptistä<BR />
<SCRIPT>
s=document.location.search;
if (s!="") s=s.substring(1);
document.write(s);
</SCRIPT>
</BODY></HTML>

Muuttujan arvoksi tulee jotakin:

oma=tekstia+juttuja&toka=1

Edit: Turhat roinat poistettu

kayttaja-2791 [19.04.2005 20:43:42]

#

No koska javascript suoritetaan selaimessa ja PHP serverillä niin näiden yhdistelmällähän se onnistuu helposti. En osaa kyllä javascriptiä mutta tyylin pitäisi olla jokin tälläinen:

<script>
s=<?php echo $_GET['muuttuja']?>;
</script>

Ja nyt Javascriptin muuttujalla s on osoiterivin 'muuttuja'-muuttujan arvo (olettaen että sain edes noin yksinkertaisen javascriptin oikein)...

Juice [19.04.2005 23:15:30]

#

Eikös se olisi

<script type="text/javascript">
var s;
s=<?php echo $_GET['muuttuja']?>;
</script>

(Ei, en osaa JS:ää, mutta kunhan muistelen)

Tommo [23.04.2005 11:40:35]

#

Kiitti vastauksista!
Sain homman toimimaan. Rennin kysymykseen vastauksentapainen (olisihan tätä voinut selittää jo aikaisemminkin): 1)yritetään kirjautua sisään (kirjautumissivulta) 2)kirjautumissivun tiedot lähetetään php-skriptille, joka tarkastaa syötteen oikeellisuuden 3)virheellisellä syötteellä ohjataan käyttäjä takaisin kirjautumissivulle virheestä ilmoittavan get-muuttujan kera 4)kirjautumissivu tutkailee onko (mitä) get-muuttujassa ja sen perusteella heittää virheilmoitusta. Niin, ja tosiaan javascriptiä käytän tähän vain sen takia, että koulussa pitäisi jotenkin esitellä sen käyttöä.

pale [23.04.2005 14:21:53]

#

Jotain pientä apua meille muille voisi löytyä tuolta:

"Are you searching for a way to combine JavaScript & PHP??? And pass variables/values to to each other. This script will simply show you how to do this!!! "

http://codewalkers.com/seecode/392.html

Itselläni on ongelmana kuinka saada html-lomakkeella olevan textarean tekstin määrä rajoitettua esim 200:n ja samalla ilmoittettua käyttäjälle "merkkejä jäljellä" -tyyliin. Ei onnistune PHP:llä kuin tekemällä if(strlen...) -tarkistus lomakkeen lähettämisen jälkeen. Silloin käyttäjä joutuu palaamaan takaisin lyhentämään tekstiään sallittuun. Vähän kömpelöä nähdäkseni. Taitaa vaatia Javascriptiä.
(Niin, maxlength ei siis toimi kuin text-laatikoissa.)

Jos jollakin olisi tietoa, miten asian voisi ratkaista (vain kohtalaisin ohjelmointitaidoin) niin olisinpa kiitollinen - useiden lailla.

uffis [23.04.2005 14:45:46]

#

pale: Et sitten kokeillut Googlella? Hakusanoiksi "count characters left javascript" ja esimerkiksi toinen vastaus.

Ja mitä taas tuohon Tommon kommenttiin tulee, voisi olla kannattavampaa käyttää JavaScriptiä johonkin sellaiseen, johon se soveltuu paremmin, kuten esimerkiksi kirjautumistunnuksen sallittujen merkkien tai vähimmäismerkkimäärän tarkistamiseen tms.

pale [23.04.2005 17:53:49]

#

Kiitos uffis, homma toimii linkistäsi nappaamallani koodilla pienen säätämisen jälkeen.

Ongelmanani oli siis, miten rajoittaa (php)palautelomakkeen tekstiä jo kirjoitettaessa ja jopa näyttää laatikossa, paljonko saa vielä naputtaa, "200 merkkiä jäljellä". PHP:llä se ei onnistu. Javascriptiä en osaa ja epäilin, voiko sellaiseen lomakkeeseen, joka lähetetään php-käsittelijään, laittaa kaikkea tarvittavaa javailua.

Eipä hätää: Mulla on siis html-sivulla form (vaikkapa palautelomake), jonka tiedot käsittelen ja lähetän php:llä. Php:ta varten lomakkeella ei tarvitse olla nimeä, mutta lainaamassani javascript-pätkässä se vaadittiin. Niinpä yksinkertaisesti lisäsin sen "myForm" (tms.) ensimmäiseksi sinne html-sivulla olevaan tagiin:

<form name = "myForm" action="kasittelija.php" method="post">

Nimi on php:n kannalta liikaa mutta ei haittaa toimintaa, kokeilin jo.

Sitten html-lomakkeen textarealle, sinne jonne palaute kirjoitetaan, javacriptin ja php:nkin vaatima nimi (yksi ja yhteinen) ja muut määrittelyt:

<textarea name="palautetta" wrap="physical" cols="28" rows="5"

Näin javascript-koodi rajoittaa lomakkeen tekstiä kaiken aikaa, mutta kun painan nappia, php-koodi tekee sille muut temput, esimerkiksi lähettää sen.

Huomatkaa, että jos haluatte kopioida html-palautelomakkeelle, joka käsitellään php:llä, javascript-toiminteisia painonappeja, tai muuta sellaista koodia, jonka alussa on määritelmä "form", lomake ei pelitä. Eli vain yksi "Form" html-lomakkeen alkuun ja yksi </form> loppuun.

Näin kikkaillen nuo if(strlen...) - tarkistukset näyttävät käyvän tarpeettomiksi, lomakkeelle saa ikkunan, joka näyttää, paljonko saa vielä naputtaa. Ja mikä parasta, vaikka lomakkeen voisi tehdä javascriptillä, voi sen tehdä käsiteltäväksi PHP:llä ja saa senkin ominaisuudet käyttöönsä.

Kyl mää olen nyt niin onnelline...

uffis [23.04.2005 19:13:43]

#

En ole nyt aivan varma, ymmärsinkö oikein, mutta käyttäjä voi aina tulla sivuille ilman JavaScriptiä, jolloin kenttään voi syöttää periaatteessa rajattomasti merkkejä. Siitä syystä kaikki käyttäjän syötteet ja niiden pituudet, jos niillä on merkitystä, pitää tarkistaa myös palvelinpäässä, vaikka miten käyttäisi JavaScriptiä.

Blaze [23.04.2005 19:14:07]

#

pale kirjoitti:

Näin kikkaillen nuo if(strlen...) - tarkistukset näyttävät käyvän tarpeettomiksi

Eivätpäs käy. Syötetty data pitää *aina* tarkistaa palvelimella. Käyttäjällähän voi olla selaimesta JavaScript pois päältä, tai jos on krakkerointitarkoituksessa liikkeellä, oma lomake, josta dataa syöttää.

Edit: pöh, hidas minä :(

pale [24.04.2005 10:18:34]

#

Olipas tulla moka - jälleen. Jätän ne tarkistukset siis voimaan neuvonne mukaan.

renni [24.04.2005 20:22:19]

#

Vieläkään kukaan ei esittänyt ainuttakaan syytä miksi javascriptissä pitäisi päästä käsiksi joihinkin post/get-muuttujiin tai mitä hyötyä siitä edes teoriassa voisi olla. Pelkän mahdollisuuden miettiminen ilmeisesti on hienompaa vaikka hommassa ei järkeä olisikaan?

peran [25.04.2005 16:41:42]

#

renni kirjoitti:

Vieläkään kukaan ei esittänyt ainuttakaan syytä miksi javascriptissä pitäisi päästä käsiksi joihinkin post/get-muuttujiin tai mitä hyötyä siitä edes teoriassa voisi olla. Pelkän mahdollisuuden miettiminen ilmeisesti on hienompaa vaikka hommassa ei järkeä olisikaan?

Tässäpäs yksi kerta, kun olen tarvinnut -GETtiä JavaScriptillä.

Olisin halunnut lomakkeen tiedot yhtevällä tavalla html-sivuiksi, mutta palvelimen tarjoajalla ei ollut php:tä tarjolla.

Myöhemmin, kun sain php-tuen, käänsin javascriptin php:ksi.

Tarkempi selvitys ongelmasta ja JavaScript-ratkaisusta.

Oli kotiviinilomake, joka laski automaagisesti kotiviinin prosentit JavaSriptillä, kun laittoi tarvittavat ominaispainot.
Samaan lomakkeeseen pystyi laittamaan myös raaka-aineet ja ajat jolloin mitäkin oli lisätty.
Lomakkeesta pystyi ajamaan raportin, jossa oli siistimmässä muodossa yhteenveto kyseisen viinin valmistusprosessista.
Jotta saisin kaikkiin viineihin yhtenevän muodon, tein .html-raportin, johon tiedot laitoin GET-muuttujasta poimimallani JavaSript-viritelmällä.
eli jotensakin seuraavalla tavalla:
<a href="javascriptraportti.html?viini=Oma­+valkoinen&vuosikerta=2005&jne..">Oma valkoinen 2005</a>

Tämän ratkaisun hyvä puoli oli siinä, että raportti tuli näkyviin, vaikka palvelin ei olisikaan pystyssä, tai katselisin - selaimella file:// - muodossa.

Myönnän kuitenkin ettei yleensä JavaSriptillä ole mitään hyötyä tarkastella -GET tai -POST-syötteitä, mutta jos palvelin ei tarjoa dynaamisia sivuja, voidaan dynaamisuus toteuttaa JavaScriptillä selaimen puolella.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta