AJEX Essential 1.0 Tutorial

download AJEX Essential 1.0 Tutorial

of 45

Transcript of AJEX Essential 1.0 Tutorial

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    1/45

    !!!!

    !

    "

    # "

    !$!%#

    "&!'() ""*

    %#* +* ! "

    "%#,

    -(.)/.)01/"0

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    2/45

    23%/"444! % /5)55

    #00

    ()()6 !().786 &!"!".).)

    UI AJAX

    EngineDB

    HTML, CSS

    Javascript call HTTP request

    Data

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    3/45

    %# !!"""!

    !!#

    + " 88"!&(!

    *!!&(

    #+/0&(+"

    5 +! 25 9" + + ! % + 9"+&( 9+ 9"+" 9++"

    :: +" 7+;

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    4/45

    !9 2 ;"/0

    9 7)

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    5/45

    !#!

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    6/45

    B0+!!,-$(!

    !!-"

    "#"

    C0+-

    9!

    "

    D0)!

    "#

    ""

    "

    E0)!(

    #7!%-"1!

    #

    /"0

    >0#(

    !

    "!

    $"

    ""

    F0)&&

    G"/

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    7/45

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    8/45

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    9/45

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    10/45

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    11/45

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    12/45

    (

    ,44#4#44

    ,44B4%#4",444,44%##

    ,44,44,44

    ,444,44%#:,44!,44/.0

    ,44",44444",44

    ,44!

    ,44444,44,44-%#"4#JK

    ,44",44"#

    .$&&

    L!/44!0L$+"

    /440

    L7/440L/%47+40L$/%47+40

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    13/45

    L3"")

    /44""0

    & )&5 3-%13995

    =I+1! ;;"&!;"# L2G! L8"!&( "39MFDE&(+25 1!

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    14/45

    "0

    &!! &! !

    )!

    ' !& 0 )& !& 0 )&-'

    !& + #

    + !

    # ! #

    #8

    +#5!" " ! "

    ! &! # "

    !" " ! / 0 &L "

    !"31. 1 !&&! !! 0 1. !&&!!!

    "" 3% 3 $ # " " "

    93%

    #"!!"

    &!-%!!.)"

    9-%2.% 5! 95;)7:1

    function verifyEmail()

    {}

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    15/45

    document.frm1.email.value

    (or)

    document.forms[0].email.value

    (or)document.forms[0].fields[0].value

    (or)

    document.getElementById(email).value

    "21

    ""()23%

    23 2 3% B1 " " $+!"()()213

    !"

    ()232 ()235 ()23 ()23)()23

    "#23%,

    var objDoc = new ActiveXObject("Microsoft.XMLDOM");

    ()2325 "1 1 L#

    ()232"

    /05/0#/0/0()/0

    ()23L##

    ()232"

    1/059/0!11/09"/01.

    / 0 $+ " "0*""()"!.$

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    16/45

    abort() 18

    getAllResponseHeaders() 7".$

    getResponseHeader( headerName )7!"".$

    open( method, URL )open( method, URL, async )

    open( method, URL, async, userName )open( method, URL, async, userName, password )

    "

    7)

    "

    8

    !!"@5@@$3@@.52@

    @$@@25)55@

    !".$B1

    "

    7)

    !

    7)

    @@"

    8

    Q@@

    "/0

    "@"@

    ""

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    17/45

    send( content ) 8

    setRequestHeader( label, value )

    4!

    .$

    Property Description

    onreadystatechange!"!"!

    readyState 7"%",

    MK:?KA KBK!

    CK

    responseText 7

    responseXML

    7 ()

    ()%# B1 23

    status 7 / CMC " @;@AMM"@3G@0

    statusText 7 / @ ;@ @3G@0

    !#.K!(3%/R#A().$S06

    Ex#1: Example on Field validation

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    18/45

    Validation.html

    Using Ajax for validation

    var xmlHttp;

    function createXMLHttpRequest()

    {

    if (window.ActiveXObject){

    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

    }

    }

    function validate()

    {alert("validate");

    createXMLHttpRequest();

    alert("xml");var date = document.getElementById("birthDate");

    alert("date"+date);

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    19/45

    var url = "./validationServlet?birthDate="+escape(date.value);

    xmlHttp.onreadystatechange = callback;alert("callback handler registered");

    xmlHttp.open("GET", url, true);

    alert("open");

    xmlHttp.send("");alert("send");

    }

    function callback()

    {if (xmlHttp.readyState == 4)

    {

    if (xmlHttp.status == 200)

    {var mes =

    xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;var val=xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;var messageArea = document.getElementById("dateMessage");

    var fontColor = "red";

    if (val == "true"){

    fontColor = "green";

    }

    messageArea.innerHTML=""+mes +"";}

    }

    }

    Ajax Validation Example

    Birth date:

    web.xml

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    20/45

    validationServletValidationServlet

    validationServlet

    /validationServlet

    // ValidationServlet.java

    import java.io.*;

    import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import javax.servlet.*;

    import javax.servlet.http.*;

    public class ValidationServlet extends HttpServlet

    {protected void doGet(HttpServletRequest request, HttpServletResponse

    response) throws ServletException, IOException

    {

    PrintWriter out = response.getWriter();

    // reading date from AJAX client

    String date=request.getParameter("birthDate").trim();

    // create one DateFormat class instance for verifying date

    SimpleDateFormat formatter= new SimpleDateFormat("MM/dd/yyyy");

    // this var will hold the status of the date validation

    boolean flag=false;try

    {

    // parsing date into desired format

    formatter.parse(date);

    // if successful, initialize flag to true

    flag=true;

    }

    catch(Exception e){

    // otherwise flag to false

    flag=false;

    }

    // setting MIME type

    response.setContentType("text/xml");

    // setting response header to inform to the browser not to cache the

    response

    response.setHeader("Cache-Control", "no-cache");

    // This message goes to server if date is invalid

    String message = "You have entered an invalid date.";

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    21/45

    if (flag) {

    // This message goes to server if date is valid

    message = "You have entered a valid date.";

    }

    // Here we are sending response

    out.println("");

    out.println("" + Boolean.toString(passed) + "");

    out.println("" + message + "");

    out.println("");

    out.close();

    }// doGet()

    }// clas

    Ex#2: Example on Dynamic news updation

    Ajax Dynamic Update

    var xmlHttp;

    function createXMLHttpRequest() {

    // alert("create XML HttpRequest");

    if (window.ActiveXObject) {

    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

    }

    }

    function doStart() {// alert("doStart");

    createXMLHttpRequest();var url = "./dynamicUpdateServlet?task=reset";

    xmlHttp.open("GET", url, true);

    xmlHttp.onreadystatechange = startCallback;xmlHttp.send(null);

    }

    function startCallback() {// alert("start callback");

    if (xmlHttp.readyState == 4) {if (xmlHttp.status == 200) {

    setTimeout("pollServer()", 5000);

    refreshTime();}

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    22/45

    }

    }

    function pollServer() {

    // alert("Poll server");

    createXMLHttpRequest();

    var url = "./dynamicUpdateServlet?task=foo";xmlHttp.open("GET", url, true);

    xmlHttp.onreadystatechange = pollCallback;

    xmlHttp.send(null);}

    function refreshTime(){

    // alert("refereshTime");

    var time_span = document.getElementById("time");var time_val = time_span.innerHTML;

    var int_val = parseInt(time_val);

    var new_int_val = int_val - 1;if (new_int_val > -1) {

    setTimeout("refreshTime()", 1000);

    time_span.innerHTML = new_int_val;

    }else

    {

    time_span.innerHTML = 5;}

    }

    function pollCallback()

    {

    // alert("pollCallback");

    if (xmlHttp.readyState == 4) {

    if (xmlHttp.status == 200) {

    var message =xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;

    if (message != "done") {

    var new_row = createRow(message);var table = document.getElementById("dynamicUpdateArea");

    var table_body =table.getElementsByTagName("tbody").item(0);

    var first_row =table_body.getElementsByTagName("tr").item(1);table_body.insertBefore(new_row, first_row);

    setTimeout("pollServer()", 5000);

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    23/45

    refreshTime();

    }}

    }

    }

    function createRow(message)

    {// alert("create row()");

    var row = document.createElement("tr");var cell = document.createElement("td");

    var cell_data = document.createTextNode(message);

    cell.appendChild(cell_data);

    row.appendChild(cell);return row;

    }

    Ajax Dynamic Update Example

    This page will automatically update itself:

    Page will refresh in 5 seconds.

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    24/45

    Welcome to Tomcat

    Welcome to Tomcat

    dynamicUpdateServlet

    DynamicUpdateServlet

    dynamicUpdateServlet/dynamicUpdateServlet

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    25/45

    // DynamicUpdateServlet.java

    import java.io.*;

    import java.net.*;import javax.servlet.*;

    import javax.servlet.http.*;

    public class DynamicUpdateServlet extends HttpServlet {

    private int counter = 1;

    /** Handles the HTTP GET method.

    * @param request servlet request

    * @param response servlet response

    */

    protected void doGet(HttpServletRequest request, HttpServletResponse

    response)

    throws ServletException, IOException {

    String res = "";

    String task = request.getParameter("task");String message = "";

    if (task.equals("reset")) {

    counter = 1;

    } else {

    switch (counter) {

    case 1: message = "Steve walks on stage"; break;

    case 2: message = "iPods rock"; break;

    case 3: message = "Steve says Macs rule"; break;

    case 4: message = "Change is coming"; break;

    case 5: message = "Yes, OS X runs on Intel - has for years"; break;

    case 6: message = "Macs will soon have Intel chips"; break;

    case 7: message = "done"; break;

    }

    counter++;}

    res = "" + message + "";

    PrintWriter out = response.getWriter();

    response.setContentType("text/xml");

    response.setHeader("Cache-Control", "no-cache");

    out.println("");

    out.println(res);

    out.println("");

    out.close();

    }

    }

    Ex#3: Example on Dynamic news updationCountriesList.html

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    26/45

    Using Ajax for validation

    var xmlHttp;

    function retrieveCountries()

    {

    createXMLHttpRequest();var continent = document.getElementById("continent");var url = "./retrieveServlet?continent="+continent;

    xmlHttp.onreadystatechange = countriesCallback;

    xmlHttp.open("GET", url, true);

    xmlHttp.send(null);

    }

    function retrieveCities()

    {

    createXMLHttpRequest();

    var country = document.getElementById("countries");

    var url = "./retrieveServlet?country="+country;xmlHttp.onreadystatechange = citiesCallback;

    xmlHttp.open("GET", url, true);

    xmlHttp.send(null);

    }

    function retrieveLocations()

    {

    createXMLHttpRequest();

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    27/45

    var city = document.getElementById("city");var url = "./retrieveServlet?city="+city;

    xmlHttp.onreadystatechange = locationsCallback;

    xmlHttp.open("GET", url, true);

    xmlHttp.send(null);

    }

    function countriesCallback()

    {

    if (xmlHttp.readyState == 4)

    {alert("4");

    if (xmlHttp.status == 200)

    {

    alert("200");

    var response=xmlHttp.responseXML.getElementsByTagName("country");

    alert(response);

    var countriesList=document.getElementById("countriesList");

    var str="Select Country ";var len=response.length;

    alert(len);

    var i=0;

    for(i=0;i

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    28/45

    var data=response[i].firstChild.data;alert(data);

    str+=""+data+"";

    }

    str+="";

    countriesList.innerHTML=str;

    }}

    }

    function locationsCallback(){

    alert("locationsCallabck");

    if (xmlHttp.readyState == 4)

    {

    alert("4");

    if (xmlHttp.status == 200)

    {

    alert("200");var response=xmlHttp.responseXML.getElementsByTagName("location");

    alert(response);

    var countriesList=document.getElementById("locationList");

    var str="Select Location ";

    var len=response.length;

    alert(len);

    var i=0;

    for(i=0;i

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    29/45

    Select Continent

    Asia

    MiddleEast

    NorthAmerica

    SouthAmericaEurope

    web.xml

    retrieveServlet

    RetrieveServlet

    retrieveServlet

    /retrieveServlet

    BASIC

    // RetrieveServletimport java.io.IOException;

    import java.io.PrintWriter;

    import javax.servlet.ServletException;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    30/45

    import javax.servlet.http.HttpServletResponse;

    public class RetrieveServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    response.setContentType("text/xml");

    PrintWriter out = response.getWriter();

    if(request.getParameter("continent")!=null &&

    request.getParameter("continent").length()!=0){

    String continent=request.getParameter("continent");

    out.println("");

    out.println("INDIA");

    out.println("PAKISTAN");

    out.println("Bangladesh");

    out.println("Singapore");

    out.println("Malaysia");out.println("");

    }

    else if(request.getParameter("country")!=null &&

    request.getParameter("country").length()!=0)

    {

    String country=request.getParameter("country");

    out.println("");

    out.println("HYDERABAD");

    out.println("Delhi");

    out.println("Mumbai");

    out.println("Chennai");

    out.println("Calcutta");out.println("");

    }

    else if(request.getParameter("city")!=null &&

    request.getParameter("city").length()!=0)

    {

    String country=request.getParameter("city");

    out.println("");

    out.println("Ameerpet Galli");

    out.println("Charminar");

    out.println("Tankbund");

    out.println("Zoo park");

    out.println("Kutub Shahi Tombs");out.println("Golconda Tombs");

    out.println("");

    }

    }}

    +"&(", 23&3

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    31/45

    9 $""1! /0 = 27 &3242&&!5

    27 #"!-&!% &!27""&(8-

    ""!().78%!=*

    %:%

    ()=*! !&(8 %!%

    27 !L #

    !"%, ; " # 27 &! &!" &! "().78827! 8!-&!%

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    32/45

    o !!o L"""!"o -o # $o dojo.gfx ! ! ! %

    "LL)o dojo.lfx""o %#$%#

    "@@2%-!

    " ! " &!

    Click me

    !"!

    var myButton = dojo.widget.byId("foo");

    &

    "

    5

    5 # # "

    .)!,#

    2%##""

    " % "

    "

    How to use DOJO in a HTML file

    +%.)",

    Flags

    6")'."7

    .5,-8!*

    6'7

    " !"%6 " ! 2

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    33/45

    Include dojo bootstrap

    Defining what resources you are using

    6")'."7

    .".9"

    .".9"

    .".9"

    6'7

    %!

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    34/45

    Offline Storage

    Layout widgets

    Accordion

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    35/45

    Content Pane

    Dialog

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    36/45

    Layout

    Layout Container

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    37/45

    Rounded Corners

    Split Container

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    38/45

    Tab Container

    TitlePane

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    39/45

    Taskbar & Windows (Floating Panes)

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    40/45

    Wizard

    Form widgets

    Checkbox, CiviCrmDateTimePicker, ColorPallette

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    41/45

    DatePicker

    FormTour

    Validation

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    42/45

    General Widgets

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    43/45

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    44/45

    AJAX-JSF

  • 8/14/2019 AJEX Essential 1.0 Tutorial

    45/45