SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
Aplicações Web com AJAX




     por Er Galvão Abbott
Objetivo desta apresentação




  Esta apresentação tem por objetivo apresentar a tecnologia
AJAX, realizando uma breve explanação sobre os conceitos
envolvidos em sua utilização.

   Como case, trataremos de um uso comum mas extremamente
últil desta tecnologia: a interação entre elementos de formulário,
mais precisamente entre uma caixa de seleção de estados e outra
de cidades.




                          Aplicações Web com AJAX, por Er Galvão Abbott
Preparativos
   Primeiramente criaremos um formulário HTML com duas
comboboxes: uma de estados e outra de cidades. Depois
criaremos um gatilho que irá disparar nossa função.

   Para isto utilizaremos o evento onChange da combobox de
estados:

 <select name='estados' onChange='ajax();'>


   Que, por sua vez agirá sobre a combobox de cidades, que
originalmente terá apenas uma opção:

 <select name='cidades'>
   <option value='x' selected>Aguardando seleção de estado</option>
 </select>




                           Aplicações Web com AJAX, por Er Galvão Abbott
1. O que é AJAX


A synchronous JavaScript A nd X ML
ou “JavaScript Assíncrono e XML”. AJAX não é uma
nova linguagem, mas apenas a utilização de duas
características da linguagem JavaScript:



  1) A possibilidade de trabalhar com requisições HTTP
  2) A habilidade de trabalhar com documentos XML




                       Aplicações Web com AJAX, por Er Galvão Abbott
Requisições HTTP

   São as requisições feitas para um servidor web.
   Um exemplo simples de uma requisição HTTP é quando você
está navegando em um website. Cada clique em um hiperlink
dispara uma requisição para o servidor:


   Usuário / Cliente                            Provedor / Servidor




       
       7      8
                       Requisição HTTP
                                                  
                              
                            Retorno (HTML)


                             Aplicações Web com AJAX, por Er Galvão Abbott
Documentos XML

  São documentos criados na linguagem de marcação XML, que
permite a descrição de informações.


      <?xml version=”1.0” encoding=”iso-8859-1”?>
      <cidades>
        <cidade>
           <codigo>1</codigo>
           <nome>Porto Alegre</nome>
        </cidade>
        <cidade>
           <codigo>2</codigo>
           <nome>Canoas</nome>
        </cidade>
      </cidades>



                        Aplicações Web com AJAX, por Er Galvão Abbott
2. Trabalhando com a requisição

  Quando trabalhamos com uma requisição HTTP devemos ter
em mente os seguintes passos:




  1   –   Criação da requisição;
  2   –   Definição da função de tratamento da resposta;
  3   –   Abertura da requisição;
  4   –   Definição do tipo de conteúdo da requisição;
  5   –   Envio da requisição.




                         Aplicações Web com AJAX, por Er Galvão Abbott
Criando uma requisição HTTP

   Uma requisição HTTP é um objeto que é criado de acordo com
o navegador onde a aplicação irá rodar:




 http_request = new ActiveXObject("Msxml2.XMLHTTP"); // IE 6+
 http_request = new ActiveXObject("Microsoft.XMLHTTP"); // IE 5.5-




 http_request = new XMLHttpRequest();



                            Aplicações Web com AJAX, por Er Galvão Abbott
Definindo a função de tratamento da resposta

   Neste passo definimos uma função que será responsável por
tratar a resposta de nossa requisição, ou seja, esta função será o
passo final de nossa aplicação.
   Para que esta função possa desempenhar seu papel dois fatores
precisam ser checados:

   1. O Estado da requisição (readyState): Uma requisição HTTP
   passa pelos seguintes estados:

     0   –   Não inicializada
     1   –   Carregando
     2   –   Carregada
     3   –   Processando
     4   –   Pronta

   2. O código de Status HTTP retornado pelo servidor (status):
   Caso este código seja 200 (HTTP OK) tudo correu bem. Qualquer
   outro código significará um erro retornado pelo servidor.


                                Aplicações Web com AJAX, por Er Galvão Abbott
Definindo a função de tratamento da resposta                    (cont.)

  A definição da função é feita através do atributo
onreadystatechange do objeto da requisição. Veremos aqui
como definir uma função “on-the-fly”:


 http_request.onreadystatechange = function ()
                                   {
                                     if (http_request.readyState == 4)
                                     {
                                         if (http_request.status == 200)
                                         {
                                             // Código
                                         }
                                         else
                                         {
                                             alert (“O servidor retornou um erro.”);
                                         }
                                     }
                                   }


                                  Aplicações Web com AJAX, por Er Galvão Abbott
Abrindo a requisição
   A abertura da requisição é feita através do método open.
Este método aceita 3 parâmetros:

  1 – O método de abertura: GET ou POST
  2 – A URL do script server-side
  3 – Se esta requisição será assíncrona

  Vejamos o exemplo:




 http_request.open('GET', 'http://localhost/script.php?iduf=' +
 document.forms[0].estados.value, true);




                             Aplicações Web com AJAX, por Er Galvão Abbott
Definindo o tipo de conteúdo da requisição
   Utilizando o método setRequestHeader, definiremos o tipo
de conteúdo que está sendo enviado por nossa requisição.

   Como utilizaremos um formulário para enviá-la, precisamos
definir um tipo especial de conteúdo:




           http_request.setRequestHeader('Content-Type',
           'application/x-www-form-urlencoded');




                           Aplicações Web com AJAX, por Er Galvão Abbott
Enviando a requisição
  Para finalmente enviarmos a requisição usamos o método send.

  Como estamos trabalhando com o método de envio GET, não
enviaremos dados, mas apenas o valor especial null.

   Os dados, quando utilizamos este método, são enviados através
de um query string na própria URL, como vimos no métdo open.




           http_request.send(null);




                            Aplicações Web com AJAX, por Er Galvão Abbott
3. Retornando XML
   Veremos agora como gerar um retorno em XML através de um
script server-side programado em PHP.

  Esta é a lógica que seguiremos:



 1 – Criamos uma variável que guardará o código XML
 2 – Testamos se o 'id' recebido é o que esperamos
 3 – Em caso positivo alimentamos nossa variável com mais XML
 4 – Definimos novamente um tipo de conteúdo, desta vez
 referente ao retorno de nosso script.
 5 – Damos saída direta no código XML, que será posteriormente
 capturado por nossa função de tratamento em JavaScript.




                          Aplicações Web com AJAX, por Er Galvão Abbott
Retornando XML        (cont.)

  Aplicada em código, nossa lógica resultará no seguinte:
  <?php
  $retorno = '<?xml version="1.0" encoding="iso-8859-1"?>';
  $retorno .= '<cidades>';

  if ($_GET['iduf'] == 1)
  {
      $retorno .= <<<FIM
      <cidade>
         <codigo>1</codigo>
         <nome>Porto Alegre</nome>
      </cidade>
      <cidade>
         <codigo>2</codigo>
         <nome>Canoas</nome>
      </cidade>
  FIM;
  }

  $retorno .= '</cidades>';
  header('Content-type: application/xml; charset=iso-8859-1');
  echo $retorno;
  ?>


                                  Aplicações Web com AJAX, por Er Galvão Abbott
4. O Grand Finale: JavaScript + XML
A primeira coisa que faremos é “zerar” a combobox de cidades, de
forma à evitar que ela seja repetidamente populada. Feito isto,
trataremos o XML retornado.

   Isto será feito acessando-se o atributo responseXML de nossa
requisição. Utilizando este atributo realizaremos uma manipulação
do DOM HTML de forma à realizar quatro etapas:

   1 – Utilizando o método DOM getElementsByTagName iremos
capturar cada cidade presente no retorno XML.
   2 – Para cada uma destas cidades capturaremos os elementos
'codigo' e 'nome', utilizando o mesmo método DOM.
   3 – Através do método DOM createElement, criaremos
dinamicamente opções (options de formulário).
   4 – Adicionaremos, com o método add, estas opções
ao combobox de cidades.



                           Aplicações Web com AJAX, por Er Galvão Abbott
O Grand Finale: JavaScript + XML        (cont.)

   O código a seguir deve ser colocado no lugar indicado em nossa
função de tratamento de retorno:

      document.forms[0].cidades.options.length = 1;
      retorno = http_request.responseXML;
      cidades = retorno.getElementsByTagName('cidade');

      for (x = 0; x < cidades.length; x++)
      {
         codigo = cidades[x].getElementsByTagName('codigo');
         descricao = cidades[x].getElementsByTagName('nome');

          novaOp = document.createElement('option');

          novaOp.value = codigo[0].firstChild.nodeValue;
          novaOp.text = descricao[0].firstChild.nodeValue;

          document.forms[0].cidades.options.add(novaOp);
      }

                             Aplicações Web com AJAX, por Er Galvão Abbott
Sobre o autor

   Er Galvão Abbott trabalha há mais de dez anos com
programação de websites e sistemas corporativos com
interface web.

  Autodidata, teve seu primeiro contato com a linguagem HTML
em 1995, quando a internet estreava no Brasil.

   Além de lecionar a Formação Desenvolvedor PHP na
Processor Alfamídia, tem se dedicado ao desenvolvimento de
sistemas baseados na web, tendo nas linguagens PHP, Perl e
JavaScript suas principais paixões.

   É o fundador e líder do UG PHPRS,além de trabalhar com
desenvolvimento de sistemas na SouthTech Super Datacenter,
empresa especializada em soluções de hospedagem sediada em
Porto Alegre (RS).


                          Aplicações Web com AJAX, por Er Galvão Abbott
Contatos

  Contatos com o autor:

  Web:
  http://www.galvao.eti.br
  http://www.phprs.com.br
  http://www.stech.net.br

  E-mail:
  galvao@galvao.eti.br

  Telefone:
  (51) 9324-5377

  IM:
  ergalvao@hotmail.com (MSN)
  er.galvao@gmail.com (GoogleTalk)


                          Aplicações Web com AJAX, por Er Galvão Abbott

Más contenido relacionado

Similar a Aplicações Web com AJAX - Er Galvão Abbott

Similar a Aplicações Web com AJAX - Er Galvão Abbott (20)

Aplicacoes Web Com AJAX
Aplicacoes Web Com AJAXAplicacoes Web Com AJAX
Aplicacoes Web Com AJAX
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
 
Ajax como comecar
Ajax como comecarAjax como comecar
Ajax como comecar
 
Ajax
AjaxAjax
Ajax
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com Ajax
 
Treinamento ajax 02
Treinamento ajax   02Treinamento ajax   02
Treinamento ajax 02
 
Tutorial de ajax
Tutorial de ajaxTutorial de ajax
Tutorial de ajax
 
Ajax O Objeto Xml Http Request Parte 1
Ajax   O Objeto Xml Http Request   Parte 1Ajax   O Objeto Xml Http Request   Parte 1
Ajax O Objeto Xml Http Request Parte 1
 
introdução a ajax
introdução a ajaxintrodução a ajax
introdução a ajax
 
Frameworks Ajax
Frameworks AjaxFrameworks Ajax
Frameworks Ajax
 
Conciex 2012
Conciex 2012Conciex 2012
Conciex 2012
 
8159540 Tutorial De Ajax
8159540 Tutorial De Ajax8159540 Tutorial De Ajax
8159540 Tutorial De Ajax
 
Artigoajax
ArtigoajaxArtigoajax
Artigoajax
 
ASP.NET AJAX
ASP.NET AJAXASP.NET AJAX
ASP.NET AJAX
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Ajax O Objeto Xml Http Request Parte 4
Ajax   O Objeto Xml Http Request   Parte 4Ajax   O Objeto Xml Http Request   Parte 4
Ajax O Objeto Xml Http Request Parte 4
 
AJAX?? Não!! Asynchronous Javascript and... JSON!!
AJAX?? Não!! Asynchronous Javascript and... JSON!!AJAX?? Não!! Asynchronous Javascript and... JSON!!
AJAX?? Não!! Asynchronous Javascript and... JSON!!
 
Tw Course Ajax 2007 Ap01
Tw Course Ajax 2007 Ap01Tw Course Ajax 2007 Ap01
Tw Course Ajax 2007 Ap01
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
 
Ajax
AjaxAjax
Ajax
 

Más de Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 

Más de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 

Aplicações Web com AJAX - Er Galvão Abbott

  • 1. Aplicações Web com AJAX por Er Galvão Abbott
  • 2. Objetivo desta apresentação Esta apresentação tem por objetivo apresentar a tecnologia AJAX, realizando uma breve explanação sobre os conceitos envolvidos em sua utilização. Como case, trataremos de um uso comum mas extremamente últil desta tecnologia: a interação entre elementos de formulário, mais precisamente entre uma caixa de seleção de estados e outra de cidades. Aplicações Web com AJAX, por Er Galvão Abbott
  • 3. Preparativos Primeiramente criaremos um formulário HTML com duas comboboxes: uma de estados e outra de cidades. Depois criaremos um gatilho que irá disparar nossa função. Para isto utilizaremos o evento onChange da combobox de estados: <select name='estados' onChange='ajax();'> Que, por sua vez agirá sobre a combobox de cidades, que originalmente terá apenas uma opção: <select name='cidades'> <option value='x' selected>Aguardando seleção de estado</option> </select> Aplicações Web com AJAX, por Er Galvão Abbott
  • 4. 1. O que é AJAX A synchronous JavaScript A nd X ML ou “JavaScript Assíncrono e XML”. AJAX não é uma nova linguagem, mas apenas a utilização de duas características da linguagem JavaScript: 1) A possibilidade de trabalhar com requisições HTTP 2) A habilidade de trabalhar com documentos XML Aplicações Web com AJAX, por Er Galvão Abbott
  • 5. Requisições HTTP São as requisições feitas para um servidor web. Um exemplo simples de uma requisição HTTP é quando você está navegando em um website. Cada clique em um hiperlink dispara uma requisição para o servidor: Usuário / Cliente Provedor / Servidor  7 8 Requisição HTTP   Retorno (HTML) Aplicações Web com AJAX, por Er Galvão Abbott
  • 6. Documentos XML São documentos criados na linguagem de marcação XML, que permite a descrição de informações. <?xml version=”1.0” encoding=”iso-8859-1”?> <cidades> <cidade> <codigo>1</codigo> <nome>Porto Alegre</nome> </cidade> <cidade> <codigo>2</codigo> <nome>Canoas</nome> </cidade> </cidades> Aplicações Web com AJAX, por Er Galvão Abbott
  • 7. 2. Trabalhando com a requisição Quando trabalhamos com uma requisição HTTP devemos ter em mente os seguintes passos: 1 – Criação da requisição; 2 – Definição da função de tratamento da resposta; 3 – Abertura da requisição; 4 – Definição do tipo de conteúdo da requisição; 5 – Envio da requisição. Aplicações Web com AJAX, por Er Galvão Abbott
  • 8. Criando uma requisição HTTP Uma requisição HTTP é um objeto que é criado de acordo com o navegador onde a aplicação irá rodar: http_request = new ActiveXObject("Msxml2.XMLHTTP"); // IE 6+ http_request = new ActiveXObject("Microsoft.XMLHTTP"); // IE 5.5- http_request = new XMLHttpRequest(); Aplicações Web com AJAX, por Er Galvão Abbott
  • 9. Definindo a função de tratamento da resposta Neste passo definimos uma função que será responsável por tratar a resposta de nossa requisição, ou seja, esta função será o passo final de nossa aplicação. Para que esta função possa desempenhar seu papel dois fatores precisam ser checados: 1. O Estado da requisição (readyState): Uma requisição HTTP passa pelos seguintes estados: 0 – Não inicializada 1 – Carregando 2 – Carregada 3 – Processando 4 – Pronta 2. O código de Status HTTP retornado pelo servidor (status): Caso este código seja 200 (HTTP OK) tudo correu bem. Qualquer outro código significará um erro retornado pelo servidor. Aplicações Web com AJAX, por Er Galvão Abbott
  • 10. Definindo a função de tratamento da resposta (cont.) A definição da função é feita através do atributo onreadystatechange do objeto da requisição. Veremos aqui como definir uma função “on-the-fly”: http_request.onreadystatechange = function () { if (http_request.readyState == 4) { if (http_request.status == 200) { // Código } else { alert (“O servidor retornou um erro.”); } } } Aplicações Web com AJAX, por Er Galvão Abbott
  • 11. Abrindo a requisição A abertura da requisição é feita através do método open. Este método aceita 3 parâmetros: 1 – O método de abertura: GET ou POST 2 – A URL do script server-side 3 – Se esta requisição será assíncrona Vejamos o exemplo: http_request.open('GET', 'http://localhost/script.php?iduf=' + document.forms[0].estados.value, true); Aplicações Web com AJAX, por Er Galvão Abbott
  • 12. Definindo o tipo de conteúdo da requisição Utilizando o método setRequestHeader, definiremos o tipo de conteúdo que está sendo enviado por nossa requisição. Como utilizaremos um formulário para enviá-la, precisamos definir um tipo especial de conteúdo: http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); Aplicações Web com AJAX, por Er Galvão Abbott
  • 13. Enviando a requisição Para finalmente enviarmos a requisição usamos o método send. Como estamos trabalhando com o método de envio GET, não enviaremos dados, mas apenas o valor especial null. Os dados, quando utilizamos este método, são enviados através de um query string na própria URL, como vimos no métdo open. http_request.send(null); Aplicações Web com AJAX, por Er Galvão Abbott
  • 14. 3. Retornando XML Veremos agora como gerar um retorno em XML através de um script server-side programado em PHP. Esta é a lógica que seguiremos: 1 – Criamos uma variável que guardará o código XML 2 – Testamos se o 'id' recebido é o que esperamos 3 – Em caso positivo alimentamos nossa variável com mais XML 4 – Definimos novamente um tipo de conteúdo, desta vez referente ao retorno de nosso script. 5 – Damos saída direta no código XML, que será posteriormente capturado por nossa função de tratamento em JavaScript. Aplicações Web com AJAX, por Er Galvão Abbott
  • 15. Retornando XML (cont.) Aplicada em código, nossa lógica resultará no seguinte: <?php $retorno = '<?xml version="1.0" encoding="iso-8859-1"?>'; $retorno .= '<cidades>'; if ($_GET['iduf'] == 1) { $retorno .= <<<FIM <cidade> <codigo>1</codigo> <nome>Porto Alegre</nome> </cidade> <cidade> <codigo>2</codigo> <nome>Canoas</nome> </cidade> FIM; } $retorno .= '</cidades>'; header('Content-type: application/xml; charset=iso-8859-1'); echo $retorno; ?> Aplicações Web com AJAX, por Er Galvão Abbott
  • 16. 4. O Grand Finale: JavaScript + XML A primeira coisa que faremos é “zerar” a combobox de cidades, de forma à evitar que ela seja repetidamente populada. Feito isto, trataremos o XML retornado. Isto será feito acessando-se o atributo responseXML de nossa requisição. Utilizando este atributo realizaremos uma manipulação do DOM HTML de forma à realizar quatro etapas: 1 – Utilizando o método DOM getElementsByTagName iremos capturar cada cidade presente no retorno XML. 2 – Para cada uma destas cidades capturaremos os elementos 'codigo' e 'nome', utilizando o mesmo método DOM. 3 – Através do método DOM createElement, criaremos dinamicamente opções (options de formulário). 4 – Adicionaremos, com o método add, estas opções ao combobox de cidades. Aplicações Web com AJAX, por Er Galvão Abbott
  • 17. O Grand Finale: JavaScript + XML (cont.) O código a seguir deve ser colocado no lugar indicado em nossa função de tratamento de retorno: document.forms[0].cidades.options.length = 1; retorno = http_request.responseXML; cidades = retorno.getElementsByTagName('cidade'); for (x = 0; x < cidades.length; x++) { codigo = cidades[x].getElementsByTagName('codigo'); descricao = cidades[x].getElementsByTagName('nome'); novaOp = document.createElement('option'); novaOp.value = codigo[0].firstChild.nodeValue; novaOp.text = descricao[0].firstChild.nodeValue; document.forms[0].cidades.options.add(novaOp); } Aplicações Web com AJAX, por Er Galvão Abbott
  • 18. Sobre o autor Er Galvão Abbott trabalha há mais de dez anos com programação de websites e sistemas corporativos com interface web. Autodidata, teve seu primeiro contato com a linguagem HTML em 1995, quando a internet estreava no Brasil. Além de lecionar a Formação Desenvolvedor PHP na Processor Alfamídia, tem se dedicado ao desenvolvimento de sistemas baseados na web, tendo nas linguagens PHP, Perl e JavaScript suas principais paixões. É o fundador e líder do UG PHPRS,além de trabalhar com desenvolvimento de sistemas na SouthTech Super Datacenter, empresa especializada em soluções de hospedagem sediada em Porto Alegre (RS). Aplicações Web com AJAX, por Er Galvão Abbott
  • 19. Contatos Contatos com o autor: Web: http://www.galvao.eti.br http://www.phprs.com.br http://www.stech.net.br E-mail: galvao@galvao.eti.br Telefone: (51) 9324-5377 IM: ergalvao@hotmail.com (MSN) er.galvao@gmail.com (GoogleTalk) Aplicações Web com AJAX, por Er Galvão Abbott