Prax3 lisamemo
Allikas: Lambda
Sisukord
Kolmanda praksi memo: 16 nov kaugõppe loeng
Erinevad teemad.
Mis järjekorras praksi teha
- "hello world"
serverisse katseproge nimega sonad.py urlilt ..../sonad.py siis ta vastab ka
- sonad.py annaks mulle teise praksi htmli muutmata kujul
sonad.py loeb serverist prax3.html faili ja trükib selle välja
- serveris segiaetud sona tegemine?
- sonad.py teeb segiaetud sõna, ja katsetame, et tegelt töötab
- ..... var segisona="ASENDASONA";
sonad.py ASENDAB stringi ASENDASONA enda tehtud segiaetud sõnaga tahan kontrollida, kas sõna mis kokku ajasin, oli õige. Nupp juba on. Nime jaoks vormivälja <form > <input type="text" name="nimi"> <input type="submit"> </form>
- server peaks faili kirjutama
Kaks äärmusvarianti veebirakenduse jaoks
- serveriproge ehitab htmli valmis
- ainult üks staatiline leht
javascript sellelt lehel saadab data serverisse, loeb serverist datat, ja ehitab lehe htmli pidevalt ümber
Alternatiiv 1: vormilt data serverisse
Vaata http://dijkstra.cs.ttu.ee/~tammet/cgi-bin/loeng/tst8.py
sona="lennuk"; function insertword() { document.getElementByID("sona").value=sona; return true; } <form action="?" method="GET"> a <input type="text" name="nimi"></input><br> b <input id="sona" type="hidden" name="sona"></input><br> <input type="submit" onsubmit="insertword();"> </form>
Avab urli a la http://dijkstra.cs.ttu.ee/~tammet/cgi-bin/loeng/tst8.py?name=tanel&sona=lennuk
Alternatiiv 2: javascriptiga data serverisse
sona="lennuk"; function sendword() { var url; url="http://..../save.py?sona="+ encodeURIComponent(sona)+"&name="; url=url+encodeURIComponent( document.getElementByID("nimi").value); document.location=url; } <form action="?" method="GET"> a <input id="nimi" type="text" name="nimi">jüri ü=&di</input><br> </form> <button onclick="sendword();">
Faili kirjutamine
Variant 1: /tmp kataloogis a la "/tmp/suva_tanel_tammet.txt"
Variant 2: tee oma kataloogi fail ntx sonad.txt ja siis tee
chmod a+rw sonad.txt
Cross-server javascript
Ei ole selles praksis vajalik. Aga, kui tahta kasutada, siis on kaks varianti:
- Erinevad imemeetodid lahenduseks. Parem mitte nendega jännata.
- Mainstream meetod toetub kahele vaalale:
- padded json:
- myfun({"name": "jaan", "age": 23}); - ...&pad=myfun&
- script tag injection
<script src="...">
Hea mõte on kasutada jquery-t abiks.