AJAX Flávio Luiz Schiavoni – EspWeb UEM - 2006
O que é Ajax? Asynchronous Javascript And XML “ AJAX é um conjunto de tecnologias para desenvolvimento para Internet e que possibilita uma comunicação  assíncrona  com o servidor – onde apenas os  dados atualizados são retornados  para o usuário, e não mais todo o  documento HTML , como era anteriormente. Assim, o Ajax  reduz  um grave problema natural das tecnologias no qual as páginas da web apóiam-se (o HTML e o HTTP): a  atualização  (refresh) de tela.”  http://www.cfgigolo.com/archives/2006/03/adobe_flex_e_ajax_desmistifica.html Flávio Luiz Schiavoni – EspWeb UEM - 2006
O que é Ajax? É uma linguagem? Moda passageira? É um framework? Aonde eu baixo? Como instala? Explica direito! Flávio Luiz Schiavoni – EspWeb UEM - 2006
O que é Ajax? A tecnologia por trás do AJAX existe já há algum tempo.  Javascript + HTML + CSS  +  XMLHttpRequest *   O que surgiu foi o padrão AJAX. * Requisições “Assíncronas”   (Javascript atualiza a página e o usuário “não vê” a requisição). Flávio Luiz Schiavoni – EspWeb UEM - 2006
Modelo tradicional Flávio Luiz Schiavoni – EspWeb UEM - 2006 http://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)
Com Ajax Flávio Luiz Schiavoni – EspWeb UEM - 2006
Porque comunicação Assícrona? Com Javascript é possível: Arrastar e soltar (Drag´n´Drop) Menus pop-up Ordenar listas Efetuar cálculos Validar formulários ... (Ver exemplos da aula de Javascript) De que adianta mostrar ao usuário um resultado que não corresponde aos dados do servidor? Flávio Luiz Schiavoni – EspWeb UEM - 2006
Exemplo: webmail Arrastar e soltar emails lidos para a lixeira Buscar lista de endereços para enviar novos emails Adicionar usuários a estas listas Teclas de atalho (Ctrl + D = Remover) Se os emails arrastados para a lixeira não forem apagados? Como avisar o servidor de uma ação Javascript? XMLHttpRequest! Flávio Luiz Schiavoni – EspWeb UEM - 2006
Como funciona? XMLHttpRequest Função Javascript disponível desde 1998 em browser como IE e Netscape Cria requisições para o servidor de maneira assíncrona, ou seja, não é necessário esperar a resposta. Várias coisas podem acontecer ao mesmo tempo Comunicação cliente-servidor (requisição e reposta) Funciona a partir de eventos Javascript Pode retornar eventos Javascript Flávio Luiz Schiavoni – EspWeb UEM - 2006
Revisão Javascript para Ajax Flávio Luiz Schiavoni – EspWeb UEM - 2006
Pegando elementos do documento  document.getElementById(‘id’) Id único na página. Retorna apenas um elemento getElementsByTagName(‘tag’) Retorna todos os elementos definidos por esta tag Flávio Luiz Schiavoni – EspWeb UEM - 2006 elementoPorId.html elementoPorNomeTag.html
Adicionando e removendo <script type=&quot;text/javascript&quot;> function createDiv(){ var mydiv =  document.createElement('div'); mydiv.className = 'newdiv'; mydiv.createAttribute(‘style’); document.body.appendChild(mydiv); } function removeElement(elt) { elt.parentNode. removeChild(elt); } </script> Flávio Luiz Schiavoni – EspWeb UEM - 2006 adicionandoElemento.html
Adicionando Eventos function  digaQueClicou (){ alert('Clicou no div');  }  var elementos = document.getElementsByTagName('DIV');  for (var i = 0 ; i < elementos.length ; i++){ el = elementos[i]; el.style.cursor = 'pointer'; if (el.addEventListener){ //    MOZILLA! el. addEventListener ('click',  digaQueClicou , false);  } else if (el.attachEvent){ //    IE! el. attachEvent ('onclick',  digaQueClicou );  }  } Flávio Luiz Schiavoni – EspWeb UEM - 2006 adicionandoEventos.html
XMLHttpRequest Flávio Luiz Schiavoni – EspWeb UEM - 2006
Criando a requisição var req = null;  if (window.XMLHttpRequest){ //    Mozilla! req = new XMLHttpRequest(); } else if (window.ActiveXObject) {    IE! try { req = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;); } catch (e){ try { req = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;); } catch (e) {} } } Flávio Luiz Schiavoni – EspWeb UEM - 2006
Recebendo resposta req.onreadystatechange = function(){  if(req.readyState == 4){ if(req.status == 200){ //Caso ok req.responseText ou response.XML } else{ // Caso erro req.statusText } }  };  req.open(&quot;GET&quot;, pagina, true);  req.send(null);  Flávio Luiz Schiavoni – EspWeb UEM - 2006 exemploAjax.html
Propriedades do objeto onreadystatechange   - Associa um evento que será chamado a cada alteração do objeto readyState  – Contém o estado do objeto responseText  – resposta no formato String responseXML  – resposta no formato XML status  – estado da requisição no formato numérico statusText  – estado da requisição no formato texto Flávio Luiz Schiavoni – EspWeb UEM - 2006 Exemplo: redirecionar.html
Estado do objeto: readyState 0 – O objeto não foi inicializado com dados 1 – O objeto está carregando seus dados 2 – O objeto terminou de carregar seus dados 3 – O dados do objeto não estão totalmente carregados (usuário já pode interagir) 4 – Os dados do objeto estão completamente carregados Flávio Luiz Schiavoni – EspWeb UEM - 2006
Estado da resposta 200 – OK  204 – Documento vazio 301 – Documento migrado para outro endereço 401 – Não autorizado 403 - Proibido 404 – Não encontrado 408 - Timeout 500 – Erro no servidor Flávio Luiz Schiavoni – EspWeb UEM - 2006
Métodos abort()  – Cancela a requisição getAllResponseHeaders()  - retorna todos os cabeçalho HTTP no formato String getResponseHeader()  – retorna o cabeçalho HTTP invocado pelo método open()  – especifica os atributos necessários para fazer a conexão com o servidor setRequestHeader()  – Adiciona um conjunto chave / valor para o cabeçalho quando o mesmo for enviado Flávio Luiz Schiavoni – EspWeb UEM - 2006
Método open() O primeiro parâmetro é o método pedido HTML – GET, POST, HEAD ou outro método qualquer.  Mantenha o nome do método em maiúsculas. O segundo parâmetro é a URL da página que está a pedir.  O terceiro parâmetro define se o pedido é assíncrono. Se TRUE, a execução da função JavaScript irá continuar enquanto que a resposta do servidor ainda não foi recebida. Isto é o A de AJAX.  Flávio Luiz Schiavoni – EspWeb UEM - 2006 open(“método”,”url”,true/false)
Métodos HTTP GET  - método mais comum, requisição de uma página HEAD – Apenas o cabeçalho do GET POST – Similar ao GET. Maior e permite enviar dados PUT – Envia uma nova versão do arquivo requisitado DELETE – Remove o arquivo requisitado TRACE – Envia de volta uma cópia da requisição para monitorar seu progresso OPTIONS – Retorna uma lista dos métodos disponíveis CONNECT – requisição baseada em proxy para tunel SSL Flávio Luiz Schiavoni – EspWeb UEM - 2006
Atenção! Flávio Luiz Schiavoni – EspWeb UEM - 2006 O método open(“método”,”url”,false) só é capaz de acessar “url” dentro do próprio domínio não sendo capaz de acessar endereços absolutos, ou seja, endereços que começam com http:// www.......
Método send() O parâmetro do método send() pode ser constituído por quaisquer dados que pretenda enviar ao servidor ao enviar (POST) o pedido.  Valor comum:  null ! Os dados devem estar sob a forma de uma linha de texto de pergunta, tipo:  name=value&anothername=othervalue&so=on  Flávio Luiz Schiavoni – EspWeb UEM - 2006 Note-se que se pretende enviar ( POST ) dados, você deve alterar o tipo MIME do pedido usando a seguinte linha:  req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');   De outra forma o servidor irá ignorar os dados.
onreadystatechange req.onreadystatechange = alertContents;  function alertContents(){ // Alguma coisa } req.onreadystatechange = function(){ // Alguma coisa }; Flávio Luiz Schiavoni – EspWeb UEM - 2006 O que fazer quando o estado for alterado? Esta função será chamada toda vez que o estado o objeto for alterado, ou seja, 1, 2, 3 e 4
Cadê o X do Ajax? XML Flávio Luiz Schiavoni – EspWeb UEM - 2006
Porque XML? Separação do conteúdo da formatação Simplicidade e Legibilidade, tanto para humanos quanto para computadores Possibilidade de criação de tags sem limitação Criação de arquivos para validação de estrutura (Chamados DTDs) Interligação de sistemas distintos Concentração na estrutura da informação, e não na sua aparência API padrão em várias linguagens (SAX/DOM) Flávio Luiz Schiavoni – EspWeb UEM - 2006
Exemplo de XML <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <Receita nome=&quot;pão&quot; tempo_de_preparo=&quot;5 minutos“ tempo_de_cozimento=&quot;1 hora&quot;> <título>Pão simples</título> <ingrediente quantidade=&quot;3&quot; unidade=&quot;xícaras&quot;>Farinha</ingrediente> <ingrediente quantidade=&quot;7&quot; unidade=&quot;gramas&quot;>Fermento</ingrediente>  <ingrediente quantidade=&quot;1.5&quot; unidade=&quot;xícaras&quot; estado=&quot;morna&quot;>Água</ingrediente>  <ingrediente quantidade=&quot;1&quot; unidade=&quot;colheres de chá&quot;>Sal</ingrediente>  <Instruções>  <passo>Misture todos os ingredientes, e dissolva bem.</passo>  <passo>Cubra com um pano e deixe por uma hora em um local morno.</passo>  <passo>Misture novamente, coloque numa bandeja e asse num forno.</passo>  </Instruções>  </Receita>  Flávio Luiz Schiavoni – EspWeb UEM - 2006
Requisição para XML req.responseText    req.responseXML  Flávio Luiz Schiavoni – EspWeb UEM - 2006
XML DOM - Árvores Flávio Luiz Schiavoni – EspWeb UEM - 2006
Javascript DOM - propriedades childNodes  – Array de nós filhos firstChild  – Primeiro nó filho lastChild  – Último nó filho nodeName  – Nome do nó nodeType  – Tipo do nó nodeValue  – Valor contido no nó nextSibling  – Próximo nó com o mesmo pai (irmão) previousSibling  – Nó anterior com o mesmo pai parentNode  – Nó pai Flávio Luiz Schiavoni – EspWeb UEM - 2006
Javascript DOM - métodos Flávio Luiz Schiavoni – EspWeb UEM - 2006 AppendChild  – adiciona um novo nó filho HasChildNodes  – booleano se o nó tem filhos RemoveChild  – remove um nó filho CreateAttribute  – Cria um novo atributo para o elemento CreateElement  – Cria um novo elemento documento CreateTextNode  – Cria um item texto
Ajax e WebService Possibilidade de comunicação assíncrona com servidor Troca de grande quantidade de dados Integração http://republicavirtual.com.br/web_cep.php?cep=87013230 http://cotacao.republicavirtual.com.br/web_cotacao.php?formato=xml Flávio Luiz Schiavoni – EspWeb UEM - 2006 Exemplo: cep.jsp e buscaCEP.jsp
Ajax Framework Prós Várias funções desenvolvidas Métodos testados Padrões de projetos Rápida integração http://script.aculo.us/ http://openrico.org/ http ://getahead.ltd.uk/dwr http://developer.yahoo.com/yui   http://mochikit.com http://code.google.com http://www.ajaxprojects.com/ Flávio Luiz Schiavoni – EspWeb UEM - 2006 Contras Tempo de aprendizado Qual framework? Integração server side
Por que não Ajax? Não há o botão voltar Problema de compatibilidade com navegadores Páginas mais pesadas “ Agora você vê, agora você não vê” Necessidade de interação com o usuário Possibilidade de desabilitar javascript Código visível Flávio Luiz Schiavoni – EspWeb UEM - 2006
Exemplos http://www .gmail.com http://www.flickr.com http://labs.google.com/suggest http://www.backbase.com/ http:// www.start.com/3/ Flávio Luiz Schiavoni – EspWeb UEM - 2006
Referências http://www.ajaxprojects.com/ http://www.imasters.com.br http://www.w3.org/DOM/ http://republicavirtual.com.br/web_cep.php?cep=87013230 http://cotacao.republicavirtual.com.br/web_cotacao.php?formato=xml http://wiki.script.aculo.us/scriptaculous/show/Demos http://openrico.org/ http://getahead.ltd.uk/dwr http://code.google.com/ http://developer.yahoo.com/yui http://www.gmail.com http://www.flickr.com http:// labs.google.com/suggest http://www.backbase.com/ http://www.start.com/3/ http://developer.mozilla.org/pt/docs/AJAX Flávio Luiz Schiavoni – EspWeb UEM - 2006

Mais conteúdo relacionado

ODP
Introdução a Desenvolvimento Web
PDF
Ajax como comecar
PDF
De Web Services RESTful a Aplicações Mashup
PDF
Consumindo dados via web service no android
PDF
8159540 Tutorial De Ajax
PPTX
Flávio Almeida MEAN Stack "to be or not to be mean"
PDF
REST Web Services com Java
PDF
Escrevendo modulos python com rust
Introdução a Desenvolvimento Web
Ajax como comecar
De Web Services RESTful a Aplicações Mashup
Consumindo dados via web service no android
8159540 Tutorial De Ajax
Flávio Almeida MEAN Stack "to be or not to be mean"
REST Web Services com Java
Escrevendo modulos python com rust

Semelhante a o que é ajax (20)

ODP
servlet-requisicoes
PPTX
Como funciona a internet
PPT
PHP e Ajax com XAJAX
PDF
Artigoajax
PPT
Ajax (Asynchronous Javascript And Xml)
PPTX
Trilha .NET - REST na plataforma Microsoft com ASP.NET Web API
PPT
CóPia De Minicurso Smsi
PPT
Minicurso Smsi
PDF
Palestra DataFlow - II São Paulo Perl Workshop
PPTX
Introdução de web
ODP
Servlets e JSP
PPT
introdução a ajax
PPT
PHP e AJAX: do Request ao Framework
PDF
Aula03 PHP - Estruturas Condicionais
PDF
Http Servlet
PPTX
jQuery e ASP.Net mvc2
PDF
Httpunit - Teste de interface Web com HttpUnit
PPT
Te servelts
KEY
Python 08
PDF
Encet 2008-ajax java
servlet-requisicoes
Como funciona a internet
PHP e Ajax com XAJAX
Artigoajax
Ajax (Asynchronous Javascript And Xml)
Trilha .NET - REST na plataforma Microsoft com ASP.NET Web API
CóPia De Minicurso Smsi
Minicurso Smsi
Palestra DataFlow - II São Paulo Perl Workshop
Introdução de web
Servlets e JSP
introdução a ajax
PHP e AJAX: do Request ao Framework
Aula03 PHP - Estruturas Condicionais
Http Servlet
jQuery e ASP.Net mvc2
Httpunit - Teste de interface Web com HttpUnit
Te servelts
Python 08
Encet 2008-ajax java
Anúncio

Mais de elliando dias (20)

PDF
Clojurescript slides
PDF
Why you should be excited about ClojureScript
PDF
Functional Programming with Immutable Data Structures
PPT
Nomenclatura e peças de container
PDF
Geometria Projetiva
PDF
Polyglot and Poly-paradigm Programming for Better Agility
PDF
Javascript Libraries
PDF
How to Make an Eight Bit Computer and Save the World!
PDF
Ragel talk
PDF
A Practical Guide to Connecting Hardware to the Web
PDF
Introdução ao Arduino
PDF
Minicurso arduino
PDF
Incanter Data Sorcery
PDF
PDF
Fab.in.a.box - Fab Academy: Machine Design
PDF
The Digital Revolution: Machines that makes
PDF
Hadoop + Clojure
PDF
Hadoop - Simple. Scalable.
PDF
Hadoop and Hive Development at Facebook
PDF
Multi-core Parallelization in Clojure - a Case Study
Clojurescript slides
Why you should be excited about ClojureScript
Functional Programming with Immutable Data Structures
Nomenclatura e peças de container
Geometria Projetiva
Polyglot and Poly-paradigm Programming for Better Agility
Javascript Libraries
How to Make an Eight Bit Computer and Save the World!
Ragel talk
A Practical Guide to Connecting Hardware to the Web
Introdução ao Arduino
Minicurso arduino
Incanter Data Sorcery
Fab.in.a.box - Fab Academy: Machine Design
The Digital Revolution: Machines that makes
Hadoop + Clojure
Hadoop - Simple. Scalable.
Hadoop and Hive Development at Facebook
Multi-core Parallelization in Clojure - a Case Study
Anúncio

Último (20)

PDF
SEMINÁRIO DE IHC - A interface Homem-Máquina
PDF
Processamento da remessa no SAP ERP, SCM610 Col15
PDF
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
PDF
Jira Software projetos completos com scrum
PDF
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
PPTX
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
PPTX
ccursoammaiacursoammaiacursoammaia123456
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PDF
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PPT
Apresentacao Do Trabalho de Inteligencia
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PDF
Banco de Dados 2atualização de Banco de d
PDF
Capacitação em Logística – Instituto Federal
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PPTX
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
PDF
resumo de instalação de placa arduino em jardim vertical para fertirrigação
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
SEMINÁRIO DE IHC - A interface Homem-Máquina
Processamento da remessa no SAP ERP, SCM610 Col15
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
Jira Software projetos completos com scrum
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
ccursoammaiacursoammaiacursoammaia123456
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Apresentacao Do Trabalho de Inteligencia
Analise Estatica de Compiladores para criar uma nova LP
Banco de Dados 2atualização de Banco de d
Capacitação em Logística – Instituto Federal
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
resumo de instalação de placa arduino em jardim vertical para fertirrigação
Conceitos básicos de Redes Neurais Artificiais
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
Processos no SAP Extended Warehouse Management, EWM100 Col26

o que é ajax

  • 1. AJAX Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 2. O que é Ajax? Asynchronous Javascript And XML “ AJAX é um conjunto de tecnologias para desenvolvimento para Internet e que possibilita uma comunicação assíncrona com o servidor – onde apenas os dados atualizados são retornados para o usuário, e não mais todo o documento HTML , como era anteriormente. Assim, o Ajax reduz um grave problema natural das tecnologias no qual as páginas da web apóiam-se (o HTML e o HTTP): a atualização (refresh) de tela.” http://www.cfgigolo.com/archives/2006/03/adobe_flex_e_ajax_desmistifica.html Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 3. O que é Ajax? É uma linguagem? Moda passageira? É um framework? Aonde eu baixo? Como instala? Explica direito! Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 4. O que é Ajax? A tecnologia por trás do AJAX existe já há algum tempo. Javascript + HTML + CSS + XMLHttpRequest * O que surgiu foi o padrão AJAX. * Requisições “Assíncronas” (Javascript atualiza a página e o usuário “não vê” a requisição). Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 5. Modelo tradicional Flávio Luiz Schiavoni – EspWeb UEM - 2006 http://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)
  • 6. Com Ajax Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 7. Porque comunicação Assícrona? Com Javascript é possível: Arrastar e soltar (Drag´n´Drop) Menus pop-up Ordenar listas Efetuar cálculos Validar formulários ... (Ver exemplos da aula de Javascript) De que adianta mostrar ao usuário um resultado que não corresponde aos dados do servidor? Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 8. Exemplo: webmail Arrastar e soltar emails lidos para a lixeira Buscar lista de endereços para enviar novos emails Adicionar usuários a estas listas Teclas de atalho (Ctrl + D = Remover) Se os emails arrastados para a lixeira não forem apagados? Como avisar o servidor de uma ação Javascript? XMLHttpRequest! Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 9. Como funciona? XMLHttpRequest Função Javascript disponível desde 1998 em browser como IE e Netscape Cria requisições para o servidor de maneira assíncrona, ou seja, não é necessário esperar a resposta. Várias coisas podem acontecer ao mesmo tempo Comunicação cliente-servidor (requisição e reposta) Funciona a partir de eventos Javascript Pode retornar eventos Javascript Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 10. Revisão Javascript para Ajax Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 11. Pegando elementos do documento document.getElementById(‘id’) Id único na página. Retorna apenas um elemento getElementsByTagName(‘tag’) Retorna todos os elementos definidos por esta tag Flávio Luiz Schiavoni – EspWeb UEM - 2006 elementoPorId.html elementoPorNomeTag.html
  • 12. Adicionando e removendo <script type=&quot;text/javascript&quot;> function createDiv(){ var mydiv = document.createElement('div'); mydiv.className = 'newdiv'; mydiv.createAttribute(‘style’); document.body.appendChild(mydiv); } function removeElement(elt) { elt.parentNode. removeChild(elt); } </script> Flávio Luiz Schiavoni – EspWeb UEM - 2006 adicionandoElemento.html
  • 13. Adicionando Eventos function digaQueClicou (){ alert('Clicou no div'); } var elementos = document.getElementsByTagName('DIV'); for (var i = 0 ; i < elementos.length ; i++){ el = elementos[i]; el.style.cursor = 'pointer'; if (el.addEventListener){ //  MOZILLA! el. addEventListener ('click', digaQueClicou , false); } else if (el.attachEvent){ //  IE! el. attachEvent ('onclick', digaQueClicou ); } } Flávio Luiz Schiavoni – EspWeb UEM - 2006 adicionandoEventos.html
  • 14. XMLHttpRequest Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 15. Criando a requisição var req = null; if (window.XMLHttpRequest){ //  Mozilla! req = new XMLHttpRequest(); } else if (window.ActiveXObject) {  IE! try { req = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;); } catch (e){ try { req = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;); } catch (e) {} } } Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 16. Recebendo resposta req.onreadystatechange = function(){ if(req.readyState == 4){ if(req.status == 200){ //Caso ok req.responseText ou response.XML } else{ // Caso erro req.statusText } } }; req.open(&quot;GET&quot;, pagina, true); req.send(null); Flávio Luiz Schiavoni – EspWeb UEM - 2006 exemploAjax.html
  • 17. Propriedades do objeto onreadystatechange - Associa um evento que será chamado a cada alteração do objeto readyState – Contém o estado do objeto responseText – resposta no formato String responseXML – resposta no formato XML status – estado da requisição no formato numérico statusText – estado da requisição no formato texto Flávio Luiz Schiavoni – EspWeb UEM - 2006 Exemplo: redirecionar.html
  • 18. Estado do objeto: readyState 0 – O objeto não foi inicializado com dados 1 – O objeto está carregando seus dados 2 – O objeto terminou de carregar seus dados 3 – O dados do objeto não estão totalmente carregados (usuário já pode interagir) 4 – Os dados do objeto estão completamente carregados Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 19. Estado da resposta 200 – OK 204 – Documento vazio 301 – Documento migrado para outro endereço 401 – Não autorizado 403 - Proibido 404 – Não encontrado 408 - Timeout 500 – Erro no servidor Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 20. Métodos abort() – Cancela a requisição getAllResponseHeaders() - retorna todos os cabeçalho HTTP no formato String getResponseHeader() – retorna o cabeçalho HTTP invocado pelo método open() – especifica os atributos necessários para fazer a conexão com o servidor setRequestHeader() – Adiciona um conjunto chave / valor para o cabeçalho quando o mesmo for enviado Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 21. Método open() O primeiro parâmetro é o método pedido HTML – GET, POST, HEAD ou outro método qualquer. Mantenha o nome do método em maiúsculas. O segundo parâmetro é a URL da página que está a pedir. O terceiro parâmetro define se o pedido é assíncrono. Se TRUE, a execução da função JavaScript irá continuar enquanto que a resposta do servidor ainda não foi recebida. Isto é o A de AJAX. Flávio Luiz Schiavoni – EspWeb UEM - 2006 open(“método”,”url”,true/false)
  • 22. Métodos HTTP GET - método mais comum, requisição de uma página HEAD – Apenas o cabeçalho do GET POST – Similar ao GET. Maior e permite enviar dados PUT – Envia uma nova versão do arquivo requisitado DELETE – Remove o arquivo requisitado TRACE – Envia de volta uma cópia da requisição para monitorar seu progresso OPTIONS – Retorna uma lista dos métodos disponíveis CONNECT – requisição baseada em proxy para tunel SSL Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 23. Atenção! Flávio Luiz Schiavoni – EspWeb UEM - 2006 O método open(“método”,”url”,false) só é capaz de acessar “url” dentro do próprio domínio não sendo capaz de acessar endereços absolutos, ou seja, endereços que começam com http:// www.......
  • 24. Método send() O parâmetro do método send() pode ser constituído por quaisquer dados que pretenda enviar ao servidor ao enviar (POST) o pedido. Valor comum: null ! Os dados devem estar sob a forma de uma linha de texto de pergunta, tipo: name=value&anothername=othervalue&so=on Flávio Luiz Schiavoni – EspWeb UEM - 2006 Note-se que se pretende enviar ( POST ) dados, você deve alterar o tipo MIME do pedido usando a seguinte linha: req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); De outra forma o servidor irá ignorar os dados.
  • 25. onreadystatechange req.onreadystatechange = alertContents; function alertContents(){ // Alguma coisa } req.onreadystatechange = function(){ // Alguma coisa }; Flávio Luiz Schiavoni – EspWeb UEM - 2006 O que fazer quando o estado for alterado? Esta função será chamada toda vez que o estado o objeto for alterado, ou seja, 1, 2, 3 e 4
  • 26. Cadê o X do Ajax? XML Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 27. Porque XML? Separação do conteúdo da formatação Simplicidade e Legibilidade, tanto para humanos quanto para computadores Possibilidade de criação de tags sem limitação Criação de arquivos para validação de estrutura (Chamados DTDs) Interligação de sistemas distintos Concentração na estrutura da informação, e não na sua aparência API padrão em várias linguagens (SAX/DOM) Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 28. Exemplo de XML <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <Receita nome=&quot;pão&quot; tempo_de_preparo=&quot;5 minutos“ tempo_de_cozimento=&quot;1 hora&quot;> <título>Pão simples</título> <ingrediente quantidade=&quot;3&quot; unidade=&quot;xícaras&quot;>Farinha</ingrediente> <ingrediente quantidade=&quot;7&quot; unidade=&quot;gramas&quot;>Fermento</ingrediente> <ingrediente quantidade=&quot;1.5&quot; unidade=&quot;xícaras&quot; estado=&quot;morna&quot;>Água</ingrediente> <ingrediente quantidade=&quot;1&quot; unidade=&quot;colheres de chá&quot;>Sal</ingrediente> <Instruções> <passo>Misture todos os ingredientes, e dissolva bem.</passo> <passo>Cubra com um pano e deixe por uma hora em um local morno.</passo> <passo>Misture novamente, coloque numa bandeja e asse num forno.</passo> </Instruções> </Receita> Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 29. Requisição para XML req.responseText  req.responseXML Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 30. XML DOM - Árvores Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 31. Javascript DOM - propriedades childNodes – Array de nós filhos firstChild – Primeiro nó filho lastChild – Último nó filho nodeName – Nome do nó nodeType – Tipo do nó nodeValue – Valor contido no nó nextSibling – Próximo nó com o mesmo pai (irmão) previousSibling – Nó anterior com o mesmo pai parentNode – Nó pai Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 32. Javascript DOM - métodos Flávio Luiz Schiavoni – EspWeb UEM - 2006 AppendChild – adiciona um novo nó filho HasChildNodes – booleano se o nó tem filhos RemoveChild – remove um nó filho CreateAttribute – Cria um novo atributo para o elemento CreateElement – Cria um novo elemento documento CreateTextNode – Cria um item texto
  • 33. Ajax e WebService Possibilidade de comunicação assíncrona com servidor Troca de grande quantidade de dados Integração http://republicavirtual.com.br/web_cep.php?cep=87013230 http://cotacao.republicavirtual.com.br/web_cotacao.php?formato=xml Flávio Luiz Schiavoni – EspWeb UEM - 2006 Exemplo: cep.jsp e buscaCEP.jsp
  • 34. Ajax Framework Prós Várias funções desenvolvidas Métodos testados Padrões de projetos Rápida integração http://script.aculo.us/ http://openrico.org/ http ://getahead.ltd.uk/dwr http://developer.yahoo.com/yui http://mochikit.com http://code.google.com http://www.ajaxprojects.com/ Flávio Luiz Schiavoni – EspWeb UEM - 2006 Contras Tempo de aprendizado Qual framework? Integração server side
  • 35. Por que não Ajax? Não há o botão voltar Problema de compatibilidade com navegadores Páginas mais pesadas “ Agora você vê, agora você não vê” Necessidade de interação com o usuário Possibilidade de desabilitar javascript Código visível Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 36. Exemplos http://www .gmail.com http://www.flickr.com http://labs.google.com/suggest http://www.backbase.com/ http:// www.start.com/3/ Flávio Luiz Schiavoni – EspWeb UEM - 2006
  • 37. Referências http://www.ajaxprojects.com/ http://www.imasters.com.br http://www.w3.org/DOM/ http://republicavirtual.com.br/web_cep.php?cep=87013230 http://cotacao.republicavirtual.com.br/web_cotacao.php?formato=xml http://wiki.script.aculo.us/scriptaculous/show/Demos http://openrico.org/ http://getahead.ltd.uk/dwr http://code.google.com/ http://developer.yahoo.com/yui http://www.gmail.com http://www.flickr.com http:// labs.google.com/suggest http://www.backbase.com/ http://www.start.com/3/ http://developer.mozilla.org/pt/docs/AJAX Flávio Luiz Schiavoni – EspWeb UEM - 2006