1. AJAX įvadas. AJAX principai:

Size: px
Start display at page:

Download "1. AJAX įvadas. AJAX principai:"

Transcription

1 1. AJAX įvadas AJAX principai: Naršyklė talpina programą (application), ne turinį. Serveris siunčia duomenis ne turinį. Asinchroniškumas - asinchroninio request/response siuntimo pagrindinis principas - vartotojas gauna du pranešimus: kai gija (thread) paleidžiama ir kai gijos darbas baigiamas (gijos veikimo metu vartotojui netrukdoma). Vartotojo darbas su aplikacija yra nenutrūkstamas. AJAX panaudojimo pavyzdžiai: GMail Google Maps (maps.google.com) (Yahoo) Google suggest... AJAX elementai: JavaScript Cascading Style Sheets (CSS) Document Object Model (DOM) XMLHttpRequest object CSS, DOM ir JavaScript bendrai vadinami Dynamic HTML (DHTML). 1

2 2. CSS Stiliaus taisyklę sudaro dvi dalys: selector elementas, kuriam taikomas stilius style declaration stiliaus savybė, kuri bus taikoma. Pvz.: h1 { color: red CSS selectors Be to, kad galima nurodyti stilių konkrečiam HTML tagui, galima taisyklės taikymą riboti, prilausomai nuo konteksto. Konteksto nurodymo būdai: HTML tag tipas, Nurodytas class type, Pagal elemento unikalų ID. Pvz.: Taikoma tik tiems <h1>, kurie yra <div> viduje: div h1 { color: red; Pvz.: Aprašome stiliaus klasę (kad tai stiliaus klasė, rodo pirmasis taškas, stiliaus klasės pavadinimas yra callout):.callout { border: solid blue 1px; background-color: cyan Apibrėžtą stiliaus klasę callout, galima taikyti elemetui: <div>normalus tekstas</div> <div class='callout'>callout stiliaus tekstas</div> 2

3 Pvz.: Elementui galima priskirti daugiau nei vieną klasę:.callout { border: solid blue 1px; background-color: cyan.loud { color: orange <div class='loud'>tekstas loud stiliaus</div> <div class='callout'>tekstas callout stiliaus</div> <div class='callout loud'>tekstas (stili ų kombinacija)</div> Galima kombinuoti klases su element-based taisyklėmis, tada stiliaus klasė bus taikoma tik nurodytiems tagams. Pvz.: Taikoma <span> tag'ams, kurių klasės atributas yra highlight: span.highlight { background-color: yellow Pvz.: Taikoma <span> tagams, kurių klasės atributas yra highlight ir kurie yra <div> tago su klase prose viduje. div.prose span.highlight { background-color: yellow Galima nurodyti taisykles, kurias taikyti tik elementui su duotu ID kad tai elemento id nurodoma simboliu #. Pvz.: Stilius taikomas tik elementui, kurio id= close : #close { color: red CSS leidžia nurodyti stilių pagal pseudo-selektorius. Pvz.: Taikoma virš linko užvedus pelytę: a:hover{ color:yellow; Pvz.: Taikoma visoms pirmosioms raidėms: *:first-letter { font-size: 500%; color: red; float: left; 3

4 CSS savybės (properties).robotic{ font-size: 14pt; font-family: courier new, courier, monospace; font-weight: bold; color: gray; arba:.robotic{ font: bold 14pt courier new, courier, monospace; color: gray;.padded{ padding: 4px;.eccentricPadded { padding-bottom: 8px; padding-top: 2px; padding-left: 2px; padding-right: 16px; margin: 1px; visibility:hidden arba display:none. 4

5 CSS pavyzdys window.html <html> <head> <link rel='stylesheet' type='text/css' href='window.css' /> </head> <body> <div class='window'> <div class='titlebar'> <span class='titlebutton' id='close'></span> <span class='titlebutton' id='max'></span> <span class='titlebutton' id='min'></span> </div> <div class='contents'> <div class='item folder'> <div class='itemname'>documents</div> </div> <div class='item folder'> <div class='itemname'>lost and found</div> </div> <div class='item folder'> <div class='itemname'>stuff</div> </div> <div class='item file'> <div class='itemname'>shopping list</div> </div> <div class='item file'> <div class='itemname'>things.txt</div> </div> <div class='item special'> <div class='itemname'>faves</div> </div> <div class='item file'> <div class='itemname'>chapter 2</div> </div> </div> </div> </body> </html> 5

6 window.css div.window{ position: absolute; overflow: auto; background-color: #eeefff; border: solid #0066aa 2px; margin: 8px; padding: 0px; width: 420px; height: 280px; div.titlebar{ background-color: #0066aa; background-image: url(images/titlebar_bg.png); background-repeat: repeat-x; color:white; border-bottom: solid black 1px; width: 100%; height: 16px; overflow:hidden; span.titlebutton{ position: relative; height: 16px; width: 16px; padding: 0px; margin: 0px 1px; 0px 1px; float:right; span.titlebutton#min{ background: transparent url(images/min.png) top left no-repeat; span.titlebutton#max{ background: transparent url(images/max.png) top left no-repeat; span.titlebutton#close{ background: transparent url(images/close.png) top left no-repeat; 6

7 div.contents { background-color: #e0e4e8; overflow: auto; padding: 2px; height:240px; div.item{ position : relative; height : 64px; width: 56px; float: left; color : #004488; font-size: 18; padding: 0px; margin: 4px; div.item div.itemname { margin-top: 48px; font: 10px verdana, arial, helvetica; text-align: center; div.folder{ background: transparent url(images/folder.png) top left no-repeat; div.file{ background: transparent url(images/file.png) top left no-repeat; div.special{ background: transparent url(images/folder_important.png) top left no-repeat; 7

8 3. DOM dokumento struktūra Document Object Model (DOM) mato web dokumentą kaip medį (hierarchinę struktūrą, kur kiekvienas mazgas turi tik vieną tėvą, o tėvas gali turėti kelis vaikus). DOM yra apibrėžtas W3C specifikacijomis. Struktūra skirta programuojant vaikščioti po dokumentą, jį keisti, redaguoti, atlikti paiešką (pvz. JavaScript, PHP ir kt. turi galimybes dirbti su DOM struktūra). Web dokumente HTML tagai yra išdėliojami medžio struktūra, t.y. HTML dokumento tagai yra DOM medžio mazgai: <HTML> tagas ya medžio šaknis, ir žymi visą dokumentą. <BODY> tagas yra, <HTML> vaikas, ir žymi matomąją dokumento dalį (kūną). <BODY> vaikai yra kiti tagai, kaip <P>, <TABLE>, <DIV> ir t.t., kurie savo viduje gali turėti kitų tagų. Pvz.: Turime paprastą html dokumentą: <html> <head> <link rel='stylesheet' type='text/css' href='window.css' /> </head> <body> <div class='window'> </div> </div> </body> </html> <div class='titlebar'> <span class='titlebutton' id='close'></span> <span class='titlebutton' id='max'></span> <span class='titlebutton' id='min'></span> </div> <div class='contents'> <div class='item folder'> <div class='itemname'>documents</div> </div> <div class='item folder'> <div class='itemname'>lost and found</div> </div> <div class='item folder'> <div class='itemname'>stuff</div> </div> 8

9 Šio HTML dokumento DOM struktūra kaip medis (sugeneruota Mozilla DOM Inspector tool): 9

10 Klasikinės web aplikacijos iš serverio parsiunčia visą html dokumentą ir jį pilnai perkrauna naršyklėje. Naudojant Ajax pakeitimai puslapyje atliekami lokaliai, pasinaudojant DOM. JavaScript engine mato šakninį dokumento mazgą (root node) kaip globalų kintamąjį document, nuo kurio pradedami atlikti visi veiksmai su DOM medžiu. Kiekvienas medžio mazgas turi vieną tėvinį elementą, nulį arba daugiau vaikų ir atributų, kurie saugomi asocijuotame masyve (associative array), t.y. ne skaitinis, o tekstinis identifikatorius (textual key), kaip width ar style. Taigi keičiant DOM medį, keisis ir pats HTML dokumentas. Apžvelgsime, kaip DOM galima modifikuoti JavaScript pagalba. Pradėsime nuo paprasto pavyzdžio:. Pvz.: hello puslapis: DOM modifikavimas JavaScript pagalba <html> <head> <link rel='stylesheet' type='text/css' href='hello.css' /> <script type='text/javascript' src='hello.js'></script> </head> <body> <p id='hello'>hello</p> <div id='empty'></div> </body> <html> hello.css.declared{ color: red; font-family: arial; font-weight: normal; font-size: 16px;.programmed{ color: blue; font-family: helvetica; font-weight: bold; font-size: 10px; 10

11 Dokumente yra tuščias <div> elementas, su nurodytu parametru ID= empty, į kurį programiškai įrašysime kitus elementus. hello.css stilių lentelėje (style sheet ) yra apibrėžti du stiliai, tačiau kol kas jie nėra panaudoti html dokumente. Tuos stilius mes priskirsime programiškai: kai dokumentas yra pilnai užkraunamas naršyklėje, stiliai bus priskirti tam tikriems mazgams, be to programiškai bus sukurti keli nauji DOM elementai. hello.js window.onload=function(){ var hello=document.getelementbyid('hello'); hello.classname='declared'; var empty=document.getelementbyid('empty'); addnode(empty,"reader of"); addnode(empty,"ajax in Action!"); var children=empty.childnodes; for (var i=0;i<children.length;i++){ children[i].classname='programmed'; empty.style.border='solid green 2px'; empty.style.width="200px"; function addnode(el,text){ var childel=document.createelement("div"); el.appendchild(childel); var txtnode=document.createtextnode(text); childel.appendchild(txtnode); JavaScript kodas pradedamas vykdyti nuo funkcijos window.onload(), kuri iškviečiama naršyklės automatiškai, kai pilnai pakraunamas dokumentas. Dokumentas turi būti pilnai pakrautas, kad būtų pilnai sudarytas DOM medis. JavaScript as atlieka veiksmus su DOM medžiu. Toliau apžvelgsime pagrindinius veikmus smulkiau. 11

12 Mazgo paieška DOM medyje Pirmiausia reikia surasti mazgą, kurį norėsime keisti. Galimi trys būdai: 1. Bet kurį DOM mazgą galima pasiekti tiesiogiai: bet kuriam DOM mazgui galima priskirti parametrą ID, kuris turi būti unikalus visame dokumente, pvz: <p id='hello'> <div id='empty'></div> Tada į tokį mazgą galima kreiptis JS komanda: var hello=document.getelementbyid('hello'); Atkreipsime dėmesį, kad tai yra objekto document komanda (su šia komada reikia elgtis atsargiai,kai yra naudojami IFrame, nes tada galimi keli Document objektai ir reikia nurodyti, į kurį tiksliai norime kreiptis). 2. Java Script visada mato HTML dokumento pagrindinį šakninį mazgą globalų kintamąjį document. Bet kuris DOM mazgas yra document mazgo vaikas ar provaikaitis. Taigi norint pasiekti DOM mazgą, galima eiti per medį, pradedant nuo jo šaknies. Tai atrodo gana gremėzdiškas būdas (ypač kai dokumentas didelis), tačiau kartais naudingas. Kiekvienas DOM mazgas turi vienintelį tėvinį mazgą ir kelis vaikus. Jie gali būti pasiekti naudojant savybes: parentnode grąžina DOM mazgo objektą, childnodes grąžina JavaScript masyvą (array), sudarytą iš visų vaikų mazgų. Pvz.: var children=empty.childnodes; for (var i=0;i<children.length;i++){... 12

13 3. DOM mazgų galima ieškoti pagal HTML tago tipą, naudojant JS metodą: getelementsbytagname(). Pvz.: Grąžina JavaScript masyvą (array), sudarytą iš visų <UL> mazgų: document.getelementsbytagname("ul") DOM mazgo sukūrimas Kartais reikia sukurti ir įterpti į dokumentą naują DOM mazgą (pvz. sukuriant message box ą). Mūsų pavyzdyje mazgas ID='empty' pradžioje yra tuščias: <div id='empty'></div> Jis užpildomas, kai pakraunamas dokumentas (onload), naudojant standartines komandas: document.createelement() - sukuria bet kokį HTML elemetą, parametrą nurodžius tag o vardą; document.createtextnode()-sukuria DOM mazgą, kuriame yra paprastas tekstas (paprastai naudojamas tarp kitų tag ų, kaip heading, div, p). function addnode(el,text){ var childel=document.createelement("div"); el.appendchild(childel); var txtnode=document.createtextnode(text); childel.appendchild(txtnode); Sukūrus DOM mazgą, jį reikia įdėti į dokumentą, kad būtų matomas. Tam naudojamas DOM mazgo metodas: el.appendchild(childel); Kai mokame pridėti mazgus, reikia jiems pritaikyti tinkamą stilių. 13

14 Stiliaus pritaikymas dokumentui classname property Norint pritaikyti CSS lentelėje apraytą stilių mazgamas, galima naudoti DOM mazgo classname property. Pvz.: mazgui hello pritaikomas stilius declared: hello.classname='declared'; style property Galima keisti ir konkretų elemento stilių, pvz, rėmelį ar šriftą. Keičiant classname savybę, yra keičiamos iškato visos masyvo style reikšmės. Tačiau galima galima kesti konkrečią vieną masyvo style reikšmę. Pvz.: empty.style.border="solid green 2px"; empty.style.width="200px"; Pav. DOM mazgo atributo style reikšmės (DOM Inspector). 14

15 DOM Elementų savybės: Savybė (property) childnodes firstchild lastchild nextsibling nodevalue parentnode previoussibling getelementbyid(id) (document) getelementsbytagname (name) haschildnodes() getattribute(name) Aprašymas Returns an array of the current element s children Returns the first direct child of the current element Returns the last child of the current element Returns the element immediately following the current element Specifies the read/write property representing the element s value Returns the element s parent node Returns the element immediately preceding the current element Retrieves the element in the document that has the specified unique ID attribute value Returns an array of the current element s children that have the specified tag name Returns a Boolean indicating whether the element has any child elements Returns value of element s attribute specified by name DOM Elementų savybės ir metodai: Property/Method - Description document.createelement(tagname) The createelementmethod on the document object creates the element specified by tagname. Providing the string div as the method parameter produces a div element. document.createtextnode(text) This document object s createtextnode method creates a node containing static text. <element>.appendchild(childnode) The appendchild method adds the specified node to the current element s list of child nodes. For example, you can add an option element as a child node of a select element. <element>.getattribute(name), <element>.setattribute(name, value) These methods, respectively, get and set the value of the attribute name of the element. <element>.insertbefore(newnode, targetnode) This inserts the node newnode before the element targetnode as a child of the current element. <element>.removeattribute(name) This removes the attribute name from the element. 15

16 <element>.removechild(childnode) This removes the element childnode from the element. <element>.replacechild(newnode, oldnode) This method replaces the node oldnode with the node newnode. <element>.haschildnodes() This method returns a Boolean indicating whether the element has any child elements. innerhtml savybės panaudojimas Dauguma populiarių naršyklių taip pat palaiko ir savybę (property) innerhtml, Kuri leidžia bet kuriam elementui priskirti norimą turinį: innerhtml yra eilutė (string), aprašanti mazgo vaikus HTML u. Pvz.: function addlistitemusinginnerhtml(el,text){ // dėmesio: ne =, o += el.innerhtml+="<div class='programmed'>"+text+"</div>"; Čia <div> elementas ir jame esantis tekstas pridedami viena komanda. Ajax naudoja daugybę DHTML savybių, tačiau priedo gali kalbėtis su serveriu, kol vartotojas naršo, nenutraukiant jo darbo. 16

17 4. Asinchroninis duomenų įkėlimas, naudojant XML technologijas Klasikinės web aplikacijos pilnai perkrauna puslapius, kai vartotojas naršo. Tačiau yra technologijų, kurios siunčia serveriui request us asinchroniškai, t.y. nenutraukiant vartotojo darbo. Pirma naudota asinchroninio darbo technologija buvo IFrames, kuri iš esmės buvo sukurta visai kitiems tikslams vaizduoti dokumentą dokumente. Vėliau pradėtas naudoti XMLHttpRequest, kuris ir buvo sukurtas būtent asinchroniniam request ų siuntimui. IFrame Atsiradus Netscape Navigator ir MS Internet Explorer 4 versijoms, plačiai pradėtas naudoti DHTML, kuris įvedė naują unikalų tag ą Iframe, kuris realizuoja plaukiojančių freimų (floating frames) koncepciją. Pvz.: Paprastas Iframe panaudojimo pavyzdys, failas index.html: <HTML> <HEAD> <TITLE>Paprastas IFRAME pavyzdys</title> </HEAD> <BODY> <CENTER> Paprastas IFRAME pavyzdys. <BR> Plaukiojantys freimai gali buti talpinami bet kurioje dokumento vietoje, analogiskai kaip paveiksliukai ar lenteles (<IMG> ar <TABLE>). </CENTER> <IFRAME SRC="float.html" NAME="A" HEIGHT=200 WIDTH=50% HSPA- CE=10 VSPACE=20 SCROLLING=YES ALIGN=RIGHT> Jusu narsykle nepalaiko IFRAME. </IFRAME> <p>desineje puseje yra plaukiojantis freimas IFRAME. Jame vaizduojamas failo float.html turinys.</p> <p>tai yra html dokumentas kitame html dokumete.</p> </BODY> </HTML> 17

18 Failas float.html: <HTML> <HEAD><TITLE>float.html</TITLE></HEAD> <BODY> <CENTER> <H1>float.html - dokumentas, esantis plaukiojanciame IFRAME.</H1> </CENTER> </BODY> </HTML> IFrame yra DOM medžio elementas, taigi jį galime judinti, keisti dydį, stilių ar padaryti nematomu, nurodant jo parametrus arba JS priemonėmis. Buvo sugalvotas asinchroninio bendravimo su serveriu būdas, kurio pagrindinė mintis - rašyti duomenis į nematomą IFrame, tuo tarpu, kai matomoji dokumento dalis nesikeičia. 18

19 Kaip DOM elementas, IFrame gali būti sukurtas: 1. tiesiogiai HTML dokumente, nurodant tagą <IFRAME>; 2. programiškai, naudojant JS komandą: document.createelement() Tada į DOM medžio elementą Iframe galima kreiptis, naudojant JS komandą: document.getelementbyid() ir programiškai jį keisti (pvz. rašyti duomenis). IFrame padaromas nematomu, kai jo plotis ir aukštis nurodomi lygūs 0. Galima naudoti stilių display:none, tačiau tada kai kurios naršyklės iš viso neužkrauna turinio į IFRAME, tada nepilnai sudaromas DOM medis. Pvz.: Nematomo IFrame sukūrimas tiesiogiai html: <html> <head> <script type='text/javascript'> window.onload=function(){ var iframe = document.getelementbyid('datafeed'); var src='datafeeds/mydata.xml'; loaddataasynchronously(iframe,src); function loaddataasynchronously(iframe,src){ //...musu suprogramuoti veiksmai </script> </head> <body> <!--..musu sukurt matoma dokumento dalis (tekstas)..--> <iframe id='datafeed' style='height:0px; width:0px;'> </iframe> </body> </html> 19

20 Pvz.: Nematomo IFrame sukūrimas programiškai, kai jo reikia. Šiuo atveju visas kodas, kuris gauna (request) duomenis, yra vienoje vietoje. function fetchdata(){ var iframe=document.createelement('iframe'); iframe.classname='hiddendatafeed'; document.body.appendchild(iframe); var src='datafeeds/mydata.xml'; loaddataasynchronously(iframe,src); Tačiau tokiu būdu galima prikurti begalę Iframe, todėl reikia pasirūpinti jų sunaikinimu arba pooling mechanizmu. 20

21 XmlDocument ir XMLHttpRequest objektai IFrame ai buvo sukurti vaizduoti turinį web puslapyje, o ne asinchroniniam bendravimui su serveriu. Žymiai didesnes galimybes suteikia nestandartiniai DOM objektai: XmlDocument ir XMLHttpRequest kurie sukurti būtent asinchroniniam duomenų gavimui iš serverio. Abu objektai atlieka panašias funkcijas, tačiau XMLHttpRequest turi platesnes request o valdymo galimybes. Todėl susipažinimui trumpai paminėsime, kaip dirba abu objektai, o toliau pagrinde nagrinėsime XMLHttpRequest. Kadangi XMLHttpRequest nėra W3C standartas, todėl tenka XMLHttpRequest objektą kurti keliais būdais: Internet Exploreryje XMLHttpRequest realizuotas kaip ActiveX objektas; kitose naršyklėse (Firefox, Safari, Opera) XMLHttpRequest realizuotas kaip pačio JavaScript objektas. Pvz.: XmlDocument objekto sukūrimas: function getxmldocument(){ var xdoc=null; if(document.implementation && document.implementation.createdocument){ //Mozilla/Safari xdoc=document.implementation.createdocument("","",null); else if (typeof ActiveXObject!="undefined"){ var msxmlax==null; try{ msxmlax=new ActiveXObject("Msxml2.DOMDocument"); //IE catch (e){ msxmlax=new ActiveXObject("Msxml.DOMDocument"); //old IE xdoc=msxmlax; if(xdoc==null typeof xdoc.load=="undefined"){ xdoc=null; return xdoc; 21

22 Pvz.: XMLHttpRequest objekto sukūrimas: function getxmlhttprequest() { var xrequest=null; if (window.xmlhttprequest) { xrequest=new XMLHttpRequest(); else if (typeof ActiveXObject!= "undefined"){ xrequest=new ActiveXObject("Microsoft.XMLHTTP"); return xrequest; Tipiniai XMLHttpRequest objekto metodai: void abort() Metodas String getallresponseheaders() String getresponseheader(string header) void open(string method, string url, boolean asynch, string username, string password) void send(content) void setrequestheader(string header, String value) Aprašymas Sustabdo dabartinį request'ą. Grąžina visus response header'ius kaip poras key/value (atitinkamo HTTP requesto). Grąžina nurodyto header'io reikšmę. Nustato kreipimosi į serverį parametrus. method ir url argumentai privalomi, likę trys - neprivalomi. method argumentas gali būti GET, POST, arba PUT. url argumentas gali būti reliatyvus arba absoliutus url adresas dokumento, į kurį kreipiamasi. asynch=true(default) nurodo, kad requestas asinchroninis, false-neasinchroninis (yra laukiama, kol response grąžinamas iš serverio). username, password aišku :) Išsiunčia requestą serveriui. Jei requestas yra asinchroninis, tai metodas grįžta iškarto, jei neasinchroninis, tai grįžta kai gaunamas response iš serverio. content yra siunčiamas kaip request kūno (body) dalis (parametrai). Nustato nurodyto headerio reikšmę lygią value argumentui. open() turi būti iškviečiama prieš bet kokį headerių nustatymą. 22

23 Tipinės XMLHttpRequest objekto savybės (properties): Savybė onreadystatechange readystate responsetext responsexml status statustext Aprašymas event handler'is, kuris iškviečiamas kiekvieną kartą pasikeitus requesto būsenai (state). Dažniausiai jam priskiriama ir iškviečiama JavaScript funkcija, reaguojanti į pasikeitimą. request'o būsena (state). Gali turėti reikšmes: 0 = uninitialized, 1 = loading, 2 = loaded, 3 = interactive, 4 = complete. Iš serverio gautas response (string tipo eilutė). Iš serverio gautas response (XML pavidalu). Su šiuo objektu galima dirbti kaip su DOM objektu (mazgu). Iš serverio gautas HTTP statuso kodas: 200 = OK, 404 = Not Found, ir t.t. Tekstinis aprašymas, atitinkantis HTTP statuso kodą. 23

24 Asinchroninės užklausos siuntimas serveriui Request'o siuntimas, naudojant XMLHttpRequest objektą, serveriui yra gana paprastas - tereikia paduoti parametrą URL adresą puslapio, kuris grąžins reikiamą response (paprastu tekstu, HTML ar XML pavidalu): function sendrequest(url,params,httpmethod){ if (!HttpMethod){ HttpMethod="POST"; var req=getxmlhttprequest(); if (req){ req.open(httpmethod,url,true); req.setrequestheader("content-type","application/x-wwwform-urlencoded"); req.onreadystatechange=callback; // callback() funkcija req.send(params); function getxmlhttprequest() { var xrequest=null; if (window.xmlhttprequest) { xrequest=new XMLHttpRequest(); else if (typeof ActiveXObject!= "undefined"){ xrequest=new ActiveXObject("Microsoft.XMLHTTP"); return xrequest; 24

25 Callback funkcijos Asinchroniniam ryšiui sudaryti, programoje reikia sukurti vietą (reentry point), į kurią bus grąžinamas užklausos rezultatas sukuriama callback funkcija. Callback funkcija iškviečiama, kai tik bus paruoštas užklausos rezultatas (response), kuris tai funkcijai ir išsiunčiamas. Callback funkcijos paprastai iškviečiamos, kai įvyksta koks nors įvykis (klaviatūros ar pelės paspaudimas, gavus rezultatus iš serverio), tiksliau callback funkcijos yra priskiriamos objekto savybėms, pvz. onkeypress, onmouseover, onload ar panašioms. Callback funkcijos yra priskiriamos XMLHTTPRequest.onreadystatechange savybei: req.onreadystatechange=callback; Call back funkcijoje yra apdorojamas response'as. 25

26 Pilna AJAX veikimo schema 1. Kliento pusės veiksmas iškviečia asinchroninę užklausą atliekančią funkciją. Pvz.: <input type="text"d=" " name=" " onblur="validate ()";> 2. Sukuriamas XMLHttpRequest objektas ir open() metodas nustato requesto parametrus. Request'as išsiunčiamas metodu send(). Pvz.: var xmlhttp; function validate () { var = document.getelementbyid(" "); var url = "validate? =" + escape( .value); var req=getxmlhttprequest(); if (req){ xmlhttp.open("get", url); xmlhttp.onreadystatechange = callback; xmlhttp.send(null); 3. Request'as pasiekia serverį, t.y. kreipiamasi į Java servletą ar PHP skriptą ar kt. 4. Serveris įvykdo skriptą, kreipiasi į duomenų bazę ir t.t. 26

27 5. Request'as grąžinamas naršyklei response gauna ir apdoroja nurodyta callback funkcija. Response gali būti apdorojamas JavaScript'u, DOM veiksmais ir pan. Pastaba: Reikia nustatyti headerius taip, kad naršyklė nerašytų rezultatų į cache atmintį: response.setheader("cache-control", "no-cache"); response.setheader("pragma", "no-cache"); 6. Kaip parodyta pavyzdyje, XMLHttpRequest objektas sukonfigūruotas taip, kad apdorojus užklausą ir grįžus yra iškviečiama funkcija callback(). Ši funkcija tikrina XMLHttpRequest objekto readystate savybę, t.y. kokį būsenos kodą grąžino serveris. Jei serveris grąžina sėkmingos užklausos kodus, callback() funkcija atieka programuotojo nurodytus veiksmus kliento pusėje (//do something interesting here). Tipinis callback() funkcijos pavyzdys: function callback() { if (xmlhttp.readystate == 4) { if (xmlhttp.status == 200) { //do something interesting here 27

28 Pvz.: callback handlerio panaudojimo pavyzdys var READY_STATE_UNINITIALIZED=0; var READY_STATE_LOADING=1; var READY_STATE_LOADED=2; var READY_STATE_INTERACTIVE=3; var READY_STATE_COMPLETE=4; var req; function sendrequest(url,params,httpmethod){ if (!HttpMethod){ HttpMethod="GET"; req=getxmlhttprequest(); if (req){ req.onreadystatechange=onreadystatechange; req.open(httpmethod,url,true); req.setrequestheader("content-type", "application/x-www-form-urlencoded"); req.send(params); function onreadystatechange(){ var ready=req.readystate; var data=null; if (ready==ready_state_complete){ data=req.responsetext; else{ data="loading...["+ready+"]"; //... apdorojami duomenys... Pirmiausia sendrequest() funkcijoje nurodoma request objekto callback handleris (onreadystatechange), o tik po to requestas išsiunčiamas. Kol kas pavyzdyje request objektas paprastumo dėlei yra global kintamasis. Tai sukeltų keblumų, siunčiant kelias užklausas vienu metu, tačiau kaip tai daryti, apžvelgsime vėliau. 28

29 GET vs. POST Kada naudoti GET, o kada POST metodą: Praktinis skirtumas yra toks, kad naršyklės ir serveriai dažnai riboja URL adreso ilgį, todėl GET tinkamas palyginti nedideliam duomenų kiekiui siųsti į serverį. Siunčiant POST metodu, užklausos ilgis nėra ribojamas. Bendrai GET naudojamas duomenų gavimui iš serverio, o POST naudojamas, kai keičiama serverio būsena (įrašomi, keičiami duomenys). Be to skirtingai nuo GET, siunčiant POST metodu, reikia nurodyti Content-Type headerį: xmlhttp.setrequestheader("content-type", "application/x-wwwform-urlencoded"); 29

30 Pilnas asinchroninio requesto pavyzdys Pavyzdyje yra apibrėžtas DOM mazgas console, į kurį rašoma HTTP request'o statuso informacija, siuntimo metu. Pvz.: Dokumento užkrovimas, naudojant XMLHttpRequest <html> <head> <script type='text/javascript'> var req=null; var console=null; var READY_STATE_UNINITIALIZED=0; var READY_STATE_LOADING=1; var READY_STATE_LOADED=2; var READY_STATE_INTERACTIVE=3; var READY_STATE_COMPLETE=4; //sendrequest siunčia request ą serveriui function sendrequest(url,params,httpmethod){ if (!HttpMethod){ HttpMethod="GET"; req=initxmlhttprequest(); if (req){ req.onreadystatechange=onreadystate; req.open(httpmethod,url,true); req.setrequestheader("content-type", "application/x-www-form-urlencoded"); req.send(params); //inicializuojamas XMLHttpRequest function initxmlhttprequest(){ var xrequest=null; if (window.xmlhttprequest){ xrequest=new XMLHttpRequest(); else if (window.activexobject){ xrequest=new ActiveXObject("Microsoft.XMLHTTP"); return xrequest; 30

31 // callback handleris, apdoroja responsą function onreadystate(){ var ready=req.readystate; var data=null; if (ready==ready_state_complete){ // nuskaitomi response duomenys data=req.responsetext; else{ data="loading...["+ready+"]"; toconsole(data); //i console div'a surasomas responso tekstas function toconsole(data){ if (console!=null){ var newline=document.createelement("div"); console.appendchild(newline); var txt=document.createtextnode(data); newline.appendchild(txt); window.onload=function(){ console=document.getelementbyid('console'); sendrequest("data.txt"); // failo turinys: PREVED </script> </head> <body> <div id='console'></div> </body> </html> Pavyzdyje naudojama XMLHttpRequest objekto savybė responsetext, kadangi response yra grąžinamas paprastas tekstas (string). Kai grąžinamas didelis duomenų kiekis, yra naudojama savybė responsexml. Jei responsui nurodomas teisingas MIME tipas text/xml, tai yra grąžinamas DOM dokumentas, su kuriuo galima dirbti, naudojant DOM savybes ir funkcijas (getelementbyid() ir childnodes). 31

32 Pastaba dėl saugumo: Bet kokie XMLHttpRequest objekto užklausiami resursai turi būti tame pačiame domain'e, kuriame yra pats kviečiantysis skriptas. Yra blokuojamos XMLHttpRequest objekto užklausos į domain'o išorę. Internet Explorer parodo pranešimą, kad vykdomas rizikingas veiksmas, bet leidžiama pasirinkti, ar tęsti užklausą. Firefox tiesiog sustabdo užklausą (request'ą) ir parodo klaidos pranešimą JavaScript konsolėje (console). 32

El. pašto konfigūravimas

El. pašto konfigūravimas El. pašto konfigūravimas Outlook Express (integruota Windows XP) elektroninio pašto klientas Žemiau pateikta instrukcija, kaip sukonfigūruoti savo elektroninį paštą vartotojams, turintiems elektroninio

More information

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita)

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita) C++ programavimo kalba Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita) Konstruktorius Sukuriant objektą, jo duomenims paprastai turi būti priskiriamos pradinės

More information

AJAX: The Basics CISC 282 March 25, 2014

AJAX: The Basics CISC 282 March 25, 2014 AJAX: The Basics CISC 282 March 25, 2014 Synchronous Communication User and server take turns waiting User requests pages while browsing Waits for server to respond Waits for the page to load in the browser

More information

AJAX: The Basics CISC 282 November 22, 2017

AJAX: The Basics CISC 282 November 22, 2017 AJAX: The Basics CISC 282 November 22, 2017 Synchronous Communication User and server take turns waiting User requests pages while browsing Waits for server to respond Waits for the page to load in the

More information

Ajax. Ronald J. Glotzbach

Ajax. Ronald J. Glotzbach Ajax Ronald J. Glotzbach What is AJAX? Asynchronous JavaScript and XML Ajax is not a technology Ajax mixes well known programming techniques in an uncommon way Enables web builders to create more appealing

More information

Kas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5]

Kas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5] Masyvas 2013 1 Vienmatis masyvas Veiksmai su masyvo elementais: reikšmių priskyrimas ir išvedimas, paieška, rikiavimas. Masyvų perdavimas procedūros (funkcijos) parametrais. 2 Kas yra masyvas? Masyvu vadinamas

More information

JAVA pagrindai Lek. Liudas Drejeris

JAVA pagrindai Lek. Liudas Drejeris JAVA pagrindai Lek. Liudas Drejeris Programa (1) Programa, tai eilė instrukcijų (vadinamų programiniais sakiniais), kurie vykdomi paeiliui, kol gaunamas norimas rezultatas. Programa (2) Programa (2) /*

More information

C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() )

C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() ) C programavimo kalba 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() ) Sąlygos operatorius if - else Sąlygos operatoriai skirti perduoti programos vykdymą vienai ar kitai programos šakai. Operatorius

More information

WWW aplikacijų saugumas 2

WWW aplikacijų saugumas 2 WWW aplikacijų saugumas 2 Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009

More information

An Introduction to AJAX. By : I. Moamin Abughazaleh

An Introduction to AJAX. By : I. Moamin Abughazaleh An Introduction to AJAX By : I. Moamin Abughazaleh How HTTP works? Page 2 / 25 Classical HTTP Process Page 3 / 25 1. The visitor requests a page 2. The server send the entire HTML, CSS and Javascript code

More information

Parengė ITMM Artūras Šakalys 1

Parengė ITMM Artūras Šakalys 1 2014.02.02 Parengė ITMM Artūras Šakalys 1 2014.02.02 Parengė ITMM Artūras Šakalys 2 Kaip suprantame masyvą? Pavyzdys: Peteliškių šeima; Gėlių laukas; 2014.02.02 Parengė ITMM Artūras Šakalys 3 Kaip suprasti

More information

Ajax Ajax Ajax = Asynchronous JavaScript and XML Using a set of methods built in to JavaScript to transfer data between the browser and a server in the background Reduces the amount of data that must be

More information

Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras. Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2008-2009 m. m. pavasario semestras Java grafinės bibliotekos AWT (Abstract Window Toolkit) Swing 2009.04.09 P.Kasparaitis. Objektinis

More information

AJAX(Asynchronous Javascript + XML) Creating client-side dynamic Web pages

AJAX(Asynchronous Javascript + XML) Creating client-side dynamic Web pages AJAX(Asynchronous Javascript + XML) Creating client-side dynamic Web pages AJAX = Asynchronous JavaScript and XML.AJAX is not a new programming language, but a new way to use existing standards. AJAX is

More information

Come to the TypeScript

Come to the TypeScript Come to the TypeScript we have type hinting! Sergej Kurakin Sergej Kurakin Amžius: 36 Dirbu: NFQ Technologies Pareigos: Programuotojas Programuoti pradėjau mokytis 1996 metais. Programuotoju dirbu nuo

More information

C programavimo kalba. 5 paskaita (Funkcijos, masyvai)

C programavimo kalba. 5 paskaita (Funkcijos, masyvai) C programavimo kalba 5 paskaita (Funkcijos, masyvai) Funkcijų pavyzdys // Skaičių lyginimo programa #include void pmax(int, int); /* prototipas */ int main() {int i, j; for (i = -10; i

More information

INDEX SYMBOLS See also

INDEX SYMBOLS See also INDEX SYMBOLS @ characters, PHP methods, 125 $ SERVER global array variable, 187 $() function, 176 $F() function, 176-177 elements, Rico, 184, 187 elements, 102 containers,

More information

A.A. 2008/09. What is Ajax?

A.A. 2008/09. What is Ajax? Internet t Software Technologies AJAX IMCNE A.A. 2008/09 Gabriele Cecchetti What is Ajax? AJAX stands for Asynchronous JavaScript And XML. AJAX is a type of programming made popular in 2005 by Google (with

More information

Gijos. Gijų modelis Javoje. R.Vaicekauskas, OP, 2017

Gijos. Gijų modelis Javoje. R.Vaicekauskas, OP, 2017 Gijos Gijų modelis Javoje R.Vaicekauskas, OP, 2017 1 Turinys Motyvacija Sukūrimas Valdymas Sinchronizacija Susijusios klasės 2 Motyvacija Gijos reikalingos tam, kad išreikšti lygiagretumą vieno proceso

More information

PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS

PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS Sąlygos sakiniai PHP skriptų vykdymo eigą galite valdyti naudodami sąlygos sakinius. Sąlygos sakiniai tai loginės struktūros, kuriose saugomas kodas, įvykdomas įgyvendinus

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Operatorių perkrovimas (7 paskaita) Operatorių perdengimas Programavimo kalbose naudojami operatoriai pasižymi polimorfizmu (daugiavariantiškumu). Kaip pavyzdys gali būti operatorius

More information

Ajax Ajax Ajax = Asynchronous JavaScript and XML Using a set of methods built in to JavaScript to transfer data between the browser and a server in the background Reduces the amount of data that must be

More information

XMLHttpRequest. CS144: Web Applications

XMLHttpRequest. CS144: Web Applications XMLHttpRequest http://oak.cs.ucla.edu/cs144/examples/google-suggest.html Q: What is going on behind the scene? What events does it monitor? What does it do when

More information

ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV

ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV Pagrindas OS X, skirtas ARM įrenginiams Programavimo aplinka: XCode ir Objective-C Programavimo kompiuteris -

More information

AJAX: Introduction CISC 282 November 27, 2018

AJAX: Introduction CISC 282 November 27, 2018 AJAX: Introduction CISC 282 November 27, 2018 Synchronous Communication User and server take turns waiting User requests pages while browsing Waits for server to respond Waits for the page to load in the

More information

Elektroninis.lt šakninių sertifikatų diegimas

Elektroninis.lt šakninių sertifikatų diegimas Elektroninis.lt šakninių sertifikatų diegimas Ši instrukcija aprašo, kaip į kompiuterį įdiegti šakninius elektroninis.lt sertifikatus. Diegimo darbus galima atlikti turint kompiuterio administratoriaus

More information

CITS1231 Web Technologies. Ajax and Web 2.0 Turning clunky website into interactive mashups

CITS1231 Web Technologies. Ajax and Web 2.0 Turning clunky website into interactive mashups CITS1231 Web Technologies Ajax and Web 2.0 Turning clunky website into interactive mashups What is Ajax? Shorthand for Asynchronous JavaScript and XML. Coined by Jesse James Garrett of Adaptive Path. Helps

More information

Web servisai WSDL. Osvaldas Grigas

Web servisai WSDL. Osvaldas Grigas Web servisai WSDL Osvaldas Grigas Web servisų aprašymas Kiekvienas web servisas yra unikalus Jis turi adresą(arba kelis adresus), kuriuo į jį galima kreiptis. Jis supranta tik tam tikros struktūros įeinančius

More information

AJAX. Introduction. AJAX: Asynchronous JavaScript and XML

AJAX. Introduction. AJAX: Asynchronous JavaScript and XML AJAX 1 2 Introduction AJAX: Asynchronous JavaScript and XML Popular in 2005 by Google Create interactive web applications Exchange small amounts of data with the server behind the scenes No need to reload

More information

E ECMAScript, 21 elements collection, HTML, 30 31, 31. Index 161

E ECMAScript, 21 elements collection, HTML, 30 31, 31. Index 161 A element, 108 accessing objects within HTML, using JavaScript, 27 28, 28 activatediv()/deactivatediv(), 114 115, 115 ActiveXObject, AJAX and, 132, 140 adding information to page dynamically, 30, 30,

More information

Amadeus On-Line Helpdesk

Amadeus On-Line Helpdesk Amadeus On-Line Helpdesk Vartotojo instrukcija Skirta kelionių agentūroms Turinys Įžanga... 3 Jungimasis prie Amadeus Helpdesk... 3 Patarimai ir pastabos... 7 Dokumento valdymas 2007 Apsauga Viešas Įmon

More information

<style type="text/css"> <!-- body {font-family: Verdana, Arial, sans-serif} ***set font family for entire Web page***

<style type=text/css> <!-- body {font-family: Verdana, Arial, sans-serif} ***set font family for entire Web page*** Chapter 7 Using Advanced Cascading Style Sheets HTML is limited in its ability to define the appearance, or style, across one or mare Web pages. We use Cascading style sheets to accomplish this. Remember

More information

CSS: The Basics CISC 282 September 20, 2014

CSS: The Basics CISC 282 September 20, 2014 CSS: The Basics CISC 282 September 20, 2014 Style Sheets System for defining a document's style Used in many contexts Desktop publishing Markup languages Cascading Style Sheets (CSS) Style sheets for HTML

More information

Trumpai-ilga istorija

Trumpai-ilga istorija Įvadas į Web Services Kas yra Web Service? Kas ką žino??? 70-ieji: Mainframe Trumpai-ilga istorija 80-ieji: Client-Server Istorijos 90-ieji: Web 2000: SOA 2010: Cloud Computing Šaltinis: Sergejus Barinovas,

More information

Session 11. Ajax. Reading & Reference

Session 11. Ajax. Reading & Reference Session 11 Ajax Reference XMLHttpRequest object Reading & Reference en.wikipedia.org/wiki/xmlhttprequest Specification developer.mozilla.org/en-us/docs/web/api/xmlhttprequest JavaScript (6th Edition) by

More information

Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy

Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy C programavimo kalba 12 paskaita (Daugiafailinės programos, laiko ir datos funkcijos) Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos

More information

AJAX. Lecture 26. Robb T. Koether. Fri, Mar 21, Hampden-Sydney College. Robb T. Koether (Hampden-Sydney College) AJAX Fri, Mar 21, / 16

AJAX. Lecture 26. Robb T. Koether. Fri, Mar 21, Hampden-Sydney College. Robb T. Koether (Hampden-Sydney College) AJAX Fri, Mar 21, / 16 AJAX Lecture 26 Robb T. Koether Hampden-Sydney College Fri, Mar 21, 2014 Robb T. Koether (Hampden-Sydney College) AJAX Fri, Mar 21, 2014 1 / 16 1 AJAX 2 Http Requests 3 Request States 4 Handling the Response

More information

AJAX and PHP AJAX. Christian Wenz,

AJAX and PHP AJAX. Christian Wenz, AJAX and PHP Christian Wenz, AJAX A Dutch soccer team A cleaner Two characters from Iliad A city in Canada A mountain in Colorado... Asynchronous JavaScript + XML 1 1 What is AJAX?

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Rodyklė this, C++ string klasė (9 paskaita) Rodyklėthis Visos objekto funkcijos gali naudotis rodykle this, kuri rodo į patį objektą. Tokiu būdu kiekviena funkcija gali rasti objekto,

More information

Module7: AJAX. Click, wait, and refresh user interaction. Synchronous request/response communication model. Page-driven: Workflow is based on pages

Module7: AJAX. Click, wait, and refresh user interaction. Synchronous request/response communication model. Page-driven: Workflow is based on pages INTERNET & WEB APPLICATION DEVELOPMENT SWE 444 Fall Semester 2008-2009 (081) Module7: Objectives/Outline Objectives Outline Understand the role of Learn how to use in your web applications Rich User Experience

More information

Paveikslėliai. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Paveikslėliai. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras. Paveikslėliai Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2008-2009 m. m. pavasario semestras Klasė Image Priklauso paketui java.awt Abstrakti klasė paveldėta iš Object Tai visų grafinių paveikslėlių

More information

Fall Semester (081) Module7: AJAX

Fall Semester (081) Module7: AJAX INTERNET & WEB APPLICATION DEVELOPMENT SWE 444 Fall Semester 2008-2009 (081) Module7: AJAX Dr. El-Sayed El-Alfy Computer Science Department King Fahd University of Petroleum and Minerals alfy@kfupm.edu.sa

More information

Web Application Security

Web Application Security Web Application Security Rajendra Kachhwaha rajendra1983@gmail.com September 23, 2015 Lecture 13: 1/ 18 Outline Introduction to AJAX: 1 What is AJAX 2 Why & When use AJAX 3 What is an AJAX Web Application

More information

Advanced Web Programming with JavaScript and Google Maps. Voronezh State University Voronezh (Russia) AJAX. Sergio Luján Mora

Advanced Web Programming with JavaScript and Google Maps. Voronezh State University Voronezh (Russia) AJAX. Sergio Luján Mora with JavaScript and Google Maps Voronezh State University Voronezh (Russia) AJAX Sergio Luján Mora Departamento de Lenguajes y Sistemas Informáticos DLSI - Universidad de Alicante 1 Table of contents Two

More information

Web Engineering CSS. By Assistant Prof Malik M Ali

Web Engineering CSS. By Assistant Prof Malik M Ali Web Engineering CSS By Assistant Prof Malik M Ali Overview of CSS CSS : Cascading Style Sheet a style is a formatting rule. That rule can be applied to an individual tag element, to all instances of a

More information

NAVIGATION INSTRUCTIONS

NAVIGATION INSTRUCTIONS CLASS :: 13 12.01 2014 NAVIGATION INSTRUCTIONS SIMPLE CSS MENU W/ HOVER EFFECTS :: The Nav Element :: Styling the Nav :: UL, LI, and Anchor Elements :: Styling the UL and LI Elements CSS DROP-DOWN MENU

More information

ĮVADAS JVM Java Virtual Machine Java virtualios mašinos (JVM) JVM write once, run everywhere

ĮVADAS JVM Java Virtual Machine Java virtualios mašinos (JVM) JVM write once, run everywhere ĮVADAS The Java programming language was introduced in 1995 by Sun Microsystems which has since merged into Oracle Corporation. Derived from languages such as C and C++. Pradžioje Java buvo skirta programuoti

More information

Projektas. .h failai Header failai (interface) .m failai Pačios programos failai ( .xib /.storyboard Vartotojo sąsajos failai

Projektas. .h failai Header failai (interface) .m failai Pačios programos failai ( .xib /.storyboard Vartotojo sąsajos failai ios Projektas.h failai Header failai (interface).m failai Pačios programos failai (.xib /.storyboard Vartotojo sąsajos failai AppDelegate.h / AppDelegate.m aplikacijos pradiniai startavimo prpograminiai

More information

jmaki Overview Sang Shin Java Technology Architect Sun Microsystems, Inc.

jmaki Overview Sang Shin Java Technology Architect Sun Microsystems, Inc. jmaki Overview Sang Shin Java Technology Architect Sun Microsystems, Inc. sang.shin@sun.com www.javapassion.com Agenda What is and Why jmaki? jmaki widgets Using jmaki widget - List widget What makes up

More information

DTD aprašas gali būti XML failo viduje. Šiuo atveju jis įterpiamas į žymę DOCTYPE naudojant tokią sintaksę:

DTD aprašas gali būti XML failo viduje. Šiuo atveju jis įterpiamas į žymę DOCTYPE naudojant tokią sintaksę: XML DTD paskirtis DTD (angl. Document Type Definition) paskirtis nusakyti, iš kokių blokų gali būti sudarytas XML (o taip pat ir HTML) dokumentas. Taigi DTD apibrėžia dokumento struktūrą išvardindama leistinus

More information

Zen Garden. CSS Zen Garden

Zen Garden. CSS Zen Garden CSS Patrick Behr CSS HTML = content CSS = display It s important to keep them separated Less code in your HTML Easy maintenance Allows for different mediums Desktop Mobile Print Braille Zen Garden CSS

More information

CSS Cascading Style Sheets

CSS Cascading Style Sheets CSS Cascading Style Sheets site root index.html about.html services.html stylesheet.css images boris.jpg Types of CSS External Internal Inline External CSS An external style sheet is a text document with

More information

DUOMENŲ STRUKTŪROS IR ALGORITMAI. Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo)

DUOMENŲ STRUKTŪROS IR ALGORITMAI. Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo) DUOMENŲ STRUKTŪROS IR ALGORITMAI Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo) Rūšiavimo veiksmas Kasdieniniame gyvenime mes dažnai rūšiuojame: Failus kataloguose Katalogus lokaliame diske Kasdienines

More information

Daugiau apie WebService

Daugiau apie WebService Daugiau apie WebService Anksčiau aprašėme, kaip sukurti paprastą WebService, o taip pat kaip jį panaudoti ASP puslapiuose. Dabar šiek tiek išplėsime WebService galimybių aprašymą. Tam tikslui šiek tiek

More information

Paprastų lentelių kūrimas

Paprastų lentelių kūrimas HTML lentelės Lentelės Informacijos pateikimas HTML-dokumentuose lentelių pagalba yra vienas iš dažniausiai naudojamų. HTML kalboje lentelės yra naudojamos ne tik tradiciškai, kaip duomenų pateikimo metodas,

More information

Deccansoft Software Services

Deccansoft Software Services Deccansoft Software Services (A Microsoft Learning Partner) HTML and CSS COURSE SYLLABUS Module 1: Web Programming Introduction In this module you will learn basic introduction to web development. Module

More information

Introduction to Ajax. Sang Shin Java Technology Architect Sun Microsystems, Inc.

Introduction to Ajax. Sang Shin Java Technology Architect Sun Microsystems, Inc. Introduction to Ajax Sang Shin Java Technology Architect Sun Microsystems, Inc. sang.shin@sun.com www.javapassion.com Agenda 1.What is Rich User Experience? 2.Rich Internet Application (RIA) Technologies

More information

Creating and Building Websites

Creating and Building Websites Creating and Building Websites Stanford University Continuing Studies CS 21 Mark Branom branom@alumni.stanford.edu Course Web Site: http://web.stanford.edu/group/csp/cs21 Week 6 Slide 1 of 28 Week 6 Agenda

More information

Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; //

Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; // C programavimo kalba 10 paskaita (Struktūros) Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; // Gale

More information

PHP Lietuviškai. Turinys

PHP Lietuviškai. Turinys PHP Lietuviškai Informacija iš interneto pakampių surinko, visa savaitgalį prie Easy PDF sėdėjo ir kankinosi Justinas L. aka scooox. Taigi, kad visi girdėtų, sakau: šitas dokumentas yra surinktas iš visų

More information

2. Pakopiniai stiliai

2. Pakopiniai stiliai 1 2. Pakopiniai stiliai 2.1. Pakopiniai stiliai (CSS) Pakopinius stilius (Cascading Style Sheets; CSS) kaip ir HTML sukūrė bei kontroliuoja Pasaulinis hipertekstinės informacijos tinklo konsorciumas (World

More information

Unit 10 - Client Side Customisation of Web Pages. Week 5 Lesson 1 CSS - Selectors

Unit 10 - Client Side Customisation of Web Pages. Week 5 Lesson 1 CSS - Selectors Unit 10 - Client Side Customisation of Web Pages Week 5 Lesson 1 CSS - Selectors Last Time CSS box model Concept of identity - id Objectives Selectors the short story (or maybe not) Web page make-over!

More information

Introduction to Ajax

Introduction to Ajax Introduction to Ajax with Bob Cozzi What is AJAX? Asynchronous JavaScript and XML A J a X Asynchronous data retrieval using the XMLHttpRequest object from JavaScript Data is retrieved from the server as

More information

Unveiling the Basics of CSS and how it relates to the DataFlex Web Framework

Unveiling the Basics of CSS and how it relates to the DataFlex Web Framework Unveiling the Basics of CSS and how it relates to the DataFlex Web Framework Presented by Roel Fermont 1 Today more than ever, Cascading Style Sheets (CSS) have a dominant place in online business. CSS

More information

Cascading Style Sheets CSCI 311

Cascading Style Sheets CSCI 311 Cascading Style Sheets CSCI 311 Learning Objectives Learn how to use CSS to style the page Learn to separate style from structure Styling with CSS Structure is separated from style in HTML5 CSS (Cascading

More information

Session 4. Style Sheets (CSS) Reading & References. A reference containing tables of CSS properties

Session 4. Style Sheets (CSS) Reading & References.   A reference containing tables of CSS properties Session 4 Style Sheets (CSS) 1 Reading Reading & References en.wikipedia.org/wiki/css Style Sheet Tutorials www.htmldog.com/guides/cssbeginner/ A reference containing tables of CSS properties web.simmons.edu/~grabiner/comm244/weekthree/css-basic-properties.html

More information

CSS. Shan-Hung Wu CS, NTHU

CSS. Shan-Hung Wu CS, NTHU CSS Shan-Hung Wu CS, NTHU CSS Zen Garden 2 Outline The Basics Selectors Layout Stacking Order 3 Outline The Basics Selectors Layout Stacking Order 4 Grammar selector { property: value; 5 Example /* for

More information

A.Kynienė. С, C++ kalbų ABC. Metodinė priemonė

A.Kynienė. С, C++ kalbų ABC. Metodinė priemonė A.Kynienė С, C++ kalbų ABC Metodinė priemonė Vilnius 2004 TURINYS C KALBOS PRIVALUMAI...4 PROGRAMAVIMO PROCESAS...5 OPERACIJOS...6 PAPRASTOS PROGRAMOS STRUKTŪRA...8 DUOMENŲ IR KINTAMŲJŲ TIPAI...9 SIMBOLINĖS

More information

Index. Ray Nicholus 2016 R. Nicholus, Beyond jquery, DOI /

Index. Ray Nicholus 2016 R. Nicholus, Beyond jquery, DOI / Index A addclass() method, 2 addeventlistener, 154, 156 AJAX communication, 20 asynchronous operations, 110 expected and unexpected responses, 111 HTTP, 110 web sockets, 111 AJAX requests DELETE requests,

More information

CSS: Cascading Style Sheets

CSS: Cascading Style Sheets CSS: Cascading Style Sheets Computer Science and Engineering College of Engineering The Ohio State University Lecture 13 Evolution of CSS MIME type: text/css CSS 1 ('96): early recognition of value CSS

More information

GIMP WEB 2.0 MENUS WEB 2.0 MENUS: HORIZONTAL NAVIGATION BAR CREATING AN HTML LIST

GIMP WEB 2.0 MENUS WEB 2.0 MENUS: HORIZONTAL NAVIGATION BAR CREATING AN HTML LIST GIMP WEB 2.0 MENUS Web 2.0 Menus: Horizontal Navigation Bar WEB 2.0 MENUS: HORIZONTAL NAVIGATION BAR Hover effect: CREATING AN HTML LIST Most horizontal or vertical navigation bars begin with a simple

More information

CIS 228 (Spring, 2012) Final, 5/17/12

CIS 228 (Spring, 2012) Final, 5/17/12 CIS 228 (Spring, 2012) Final, 5/17/12 Name (sign) Name (print) email I would prefer to fail than to receive a grade of or lower for this class. Question 1 2 3 4 5 6 7 8 9 A B C D E TOTAL Score CIS 228,

More information

IT2353 WEB TECHNOLOGY Question Bank UNIT I 1. What is the difference between node and host? 2. What is the purpose of routers? 3. Define protocol. 4.

IT2353 WEB TECHNOLOGY Question Bank UNIT I 1. What is the difference between node and host? 2. What is the purpose of routers? 3. Define protocol. 4. IT2353 WEB TECHNOLOGY Question Bank UNIT I 1. What is the difference between node and host? 2. What is the purpose of routers? 3. Define protocol. 4. Why are the protocols layered? 5. Define encapsulation.

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Šablonai (10 paskaita) Kodėl šablonai (templates)? Programuojant egzistuoja situacijos, kai reikia atlikti tuos pačius veiksmus su skirtingais duomenų tipais (pvz. modulio radimas,

More information

Index. alt, 38, 57 class, 86, 88, 101, 107 href, 24, 51, 57 id, 86 88, 98 overview, 37. src, 37, 57. backend, WordPress, 146, 148

Index. alt, 38, 57 class, 86, 88, 101, 107 href, 24, 51, 57 id, 86 88, 98 overview, 37. src, 37, 57. backend, WordPress, 146, 148 Index Numbers & Symbols (angle brackets), in HTML, 47 : (colon), in CSS, 96 {} (curly brackets), in CSS, 75, 96. (dot), in CSS, 89, 102 # (hash mark), in CSS, 87 88, 99 % (percent) font size, in CSS,

More information

Wireframe :: tistory wireframe tistory.

Wireframe :: tistory wireframe tistory. Page 1 of 45 Wireframe :: tistory wireframe tistory Daum Tistory GO Home Location Tags Media Guestbook Admin 'XHTML+CSS' 7 1 2009/09/20 [ ] XHTML CSS - 6 (2) 2 2009/07/23 [ ] XHTML CSS - 5 (6) 3 2009/07/17

More information

Table of Contents. 1. A Quick Overview of Web Development...1 EVALUATION COPY

Table of Contents. 1. A Quick Overview of Web Development...1 EVALUATION COPY Table of Contents Table of Contents 1. A Quick Overview of Web Development...1 Client-side Programming...1 HTML...1 Cascading Style Sheets...1 JavaScript...1 Dynamic HTML...1 Ajax...1 Adobe Flash...2 Server-side

More information

Session 18. jquery - Ajax. Reference. Tutorials. jquery Methods. Session 18 jquery and Ajax 10/31/ Robert Kelly,

Session 18. jquery - Ajax. Reference. Tutorials. jquery Methods. Session 18 jquery and Ajax 10/31/ Robert Kelly, Session 18 jquery - Ajax 1 Tutorials Reference http://learn.jquery.com/ajax/ http://www.w3schools.com/jquery/jquery_ajax_intro.asp jquery Methods http://www.w3schools.com/jquery/jquery_ref_ajax.asp 2 10/31/2018

More information

AJAX ASYNCHRONOUS JAVASCRIPT AND XML. Laura Farinetti - DAUIN

AJAX ASYNCHRONOUS JAVASCRIPT AND XML. Laura Farinetti - DAUIN AJAX ASYNCHRONOUS JAVASCRIPT AND XML Laura Farinetti - DAUIN Rich-client asynchronous transactions In 2005, Jesse James Garrett wrote an online article titled Ajax: A New Approach to Web Applications (www.adaptivepath.com/ideas/essays/archives/000

More information

Proper_Name Final Exam December 21, 2005 CS-081/Vickery Page 1 of 4

Proper_Name Final Exam December 21, 2005 CS-081/Vickery Page 1 of 4 Proper_Name Final Exam December 21, 2005 CS-081/Vickery Page 1 of 4 NOTE: It is my policy to give a failing grade in the course to any student who either gives or receives aid on any exam or quiz. INSTRUCTIONS:

More information

AJAX Programming Chris Seddon

AJAX Programming Chris Seddon AJAX Programming Chris Seddon seddon-software@keme.co.uk 2000-12 CRS Enterprises Ltd 1 2000-12 CRS Enterprises Ltd 2 What is Ajax? "Asynchronous JavaScript and XML" Originally described in 2005 by Jesse

More information

Polimorfizmas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Polimorfizmas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras. Polimorfizmas Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2009-2010 m. m. pavasario semestras Dar apie paveldėjimą Java kalboje kiekvienas paveldėtos klasės objektas gali būti naudojamas ten, kur

More information

HTML & CSS. SWE 432, Fall 2017 Design and Implementation of Software for the Web

HTML & CSS. SWE 432, Fall 2017 Design and Implementation of Software for the Web HTML & CSS SWE 432, Fall 2017 Design and Implementation of Software for the Web HTML: HyperText Markup Language LaToza Language for describing structure of a document Denotes hierarchy of elements What

More information

BEFORE CLASS. If you haven t already installed the Firebug extension for Firefox, download it now from

BEFORE CLASS. If you haven t already installed the Firebug extension for Firefox, download it now from BEFORE CLASS If you haven t already installed the Firebug extension for Firefox, download it now from http://getfirebug.com. If you don t already have the Firebug extension for Firefox, Safari, or Google

More information

quiz 1 details wed nov 17, 1pm see handout for locations covers weeks 0 through 10, emphasis on 7 onward closed book bring a , 2-sided cheat she

quiz 1 details wed nov 17, 1pm see handout for locations covers weeks 0 through 10, emphasis on 7 onward closed book bring a , 2-sided cheat she quiz 1 details wed nov 17, 1pm see handout for locations covers weeks 0 through 10, emphasis on 7 onward closed book bring a 8.5 11, 2-sided cheat sheet 75 minutes 15% of final grade resources old quizzes

More information

CSS3 Basics. From & CSS Visual Dictionary Learning Curve Books, LLC

CSS3 Basics. From   & CSS Visual Dictionary Learning Curve Books, LLC CSS3 Basics From www.w3schools.com & CSS Visual Dictionary Learning Curve Books, LLC CSS Box Model Margin (top, right, bottom, left) Shorthand property, equivalent to Border-width border-style border-color

More information

CSS. https://developer.mozilla.org/en-us/docs/web/css

CSS. https://developer.mozilla.org/en-us/docs/web/css CSS https://developer.mozilla.org/en-us/docs/web/css http://www.w3schools.com/css/default.asp Cascading Style Sheets Specifying visual style and layout for an HTML document HTML elements inherit CSS properties

More information

Buferio perpildymo klaida Įvadas, techniniai klausimai

Buferio perpildymo klaida Įvadas, techniniai klausimai Buferio perpildymo klaida Įvadas, techniniai klausimai Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2009-10-16 R. Griškevičius, Saugus

More information

Controlling Appearance the Old Way

Controlling Appearance the Old Way Webpages and Websites CSS Controlling Appearance the Old Way Older webpages use predefined tags - - italic text; - bold text attributes - Tables (and a few other elements) use specialized

More information

Cascading Style Sheets (CSS)

Cascading Style Sheets (CSS) Cascading Style Sheets (CSS) Mendel Rosenblum 1 Driving problem behind CSS What font type and size does introduction generate? Answer: Some default from the browser (HTML tells what browser how)

More information

INTRODUCTION TO CSS. Topics MODULE 5

INTRODUCTION TO CSS. Topics MODULE 5 MODULE 5 INTRODUCTION TO CSS Topics > Cascading Style Sheets (CSS3) Basics Adding a Style Sheet Selectors Adding Dynamic Styles to Elements CSS3 Properties CSS3 Box Model Vendor Prefixes Cascading Style

More information

KOMPIUTERIŲ TINKLAI. 5 paskaita Tinklo lygmuo, IP protokolas

KOMPIUTERIŲ TINKLAI. 5 paskaita Tinklo lygmuo, IP protokolas KOMPIUTERIŲ TINKLAI 5 paskaita Tinklo lygmuo, IP protokolas Lokalus tinklas (kartojimas) Lokalaus tinklo technologijos: Kokius žinote prieigos prie terpės metodus? Kas yra Ethernet, kokie jo skiriamieji

More information

Using Dreamweaver CS6

Using Dreamweaver CS6 Using Dreamweaver CS6 7 Dynamic HTML Dynamic HTML (DHTML) is a term that refers to website that use a combination of HTML, scripting such as JavaScript, CSS and the Document Object Model (DOM). HTML and

More information

CSS means Cascading Style Sheets. It is used to style HTML documents.

CSS means Cascading Style Sheets. It is used to style HTML documents. CSS CSS means Cascading Style Sheets. It is used to style HTML documents. Like we mentioned in the HTML tutorial, CSS can be embedded in the HTML document but it's better, easier and neater if you style

More information

COMP519 Web Programming Lecture 16: JavaScript (Part 7) Handouts

COMP519 Web Programming Lecture 16: JavaScript (Part 7) Handouts COMP519 Web Programming Lecture 16: JavaScript (Part 7) Handouts Ullrich Hustadt Department of Computer Science School of Electrical Engineering, Electronics, and Computer Science University of Liverpool

More information

AJAX Basics. Welcome to AJAX Basics presentation. My name is Sang Shin. I am Java technology architect and evangelist from Sun Microsystems.

AJAX Basics. Welcome to AJAX Basics presentation. My name is Sang Shin. I am Java technology architect and evangelist from Sun Microsystems. AJAX Basics Sang Shin Java Technology Architect Sun Microsystems, Inc. sang.shin@sun.com www.javapassion.com Welcome to AJAX Basics presentation. My name is Sang Shin. I am Java technology architect and

More information

Lecture : 3. Practical : 2. Course Credit. Tutorial : 0. Total : 5. Course Learning Outcomes

Lecture : 3. Practical : 2. Course Credit. Tutorial : 0. Total : 5. Course Learning Outcomes Course Title Course Code WEB DESIGNING TECHNOLOGIES DCE311 Lecture : 3 Course Credit Practical : Tutorial : 0 Total : 5 Course Learning Outcomes At end of the course, students will be able to: Understand

More information

The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments.

The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments. Web Development WEB101: Web Development Fundamentals using HTML, CSS and JavaScript $2,495.00 5 Days Replay Class Recordings included with this course Upcoming Dates Course Description This 5-day instructor-led

More information

COSC 2206 Internet Tools. CSS Cascading Style Sheets

COSC 2206 Internet Tools. CSS Cascading Style Sheets COSC 2206 Internet Tools CSS Cascading Style Sheets 1 W3C CSS Reference The official reference is here www.w3.org/style/css/ 2 W3C CSS Validator You can upload a CSS file and the validator will check it

More information

Stamp Builder. Documentation. v1.0.0

Stamp  Builder. Documentation.   v1.0.0 Stamp Email Builder Documentation http://getemailbuilder.com v1.0.0 THANK YOU FOR PURCHASING OUR EMAIL EDITOR! This documentation covers all main features of the STAMP Self-hosted email editor. If you

More information