AJAX
Rodrigo Vronscki Ricardo
Roger de Córdova Farias
Ronny Fernandes da Cruz
Tiago Coelho
O que é AJAX
Asynchronous JavaScript and XML.
AJAX não é uma linguagem de programação, mas uma nova
maneira de usar padrões existentes.
AJAX é a arte de trocar dados com um servidor e atualizar
partes de uma página web sem ter que recarregar toda a
página, assim criando páginas rápidas e dinâmicas.
História
90s
1995
1996
1999
- Páginas são totalmente recarregadas
- Java Applets (client-side)
- Internet Explorer lança o <iframe>
- MS cria o XMLHTTP ActiveX control no IE5
- mais tarde adotado pela Mozilla, Safari, Opera e
outros como XMLHttpRequest JavaScript object
2000 - Utilizado no Outlook Web Access
2004 - Gmail
2005 - Google Maps
2005 - Surge o termo "AJAX"
2006 - W3C lança o primeiro rascunho do XMLHttpRequest
Princípios
O NAVEGADOR HOSPEDA A APLICAÇÃO
- Navegador recebe documento mais complexos
- Documento é mantido com o navegador por toda a sessão
- Documento decide manipular ou passar informação ao
servidor
- Informações podem ser persistidas no cliente
Princípios
O SERVIDOR FORNECE DADOS
- Menor fluxo de dados. Trafego de dados relevantes
- Retorno pode ser código Javascript, XML ou Texto
- Maior tráfego no início da sessão
- Eficiência ao longo do tempo
Princípios
INTERAÇÃO FLEXÍVEL E CONTÍNUA
- Maior rendimento na utilização da página (tempo)
- Similaridade com aplicações Desktop
- Melhora na usabilidade
- Servidor trabalha junto com usuário, uma vez que há troca de
dados, conforme o usuário interage com a interface
Princípios
A CODIFICAÇÃO REQUER DISCIPLINA
- Código dura do início ao fim da sessão
- Deve manter performance
- Eficiência na comunicação com servidor
- Deve abstrair o mundo real, sem que o usuário se preocupe
com velocidade, comunicação ou performance
Desvantagens
- Páginas sucessivas não são registradas no Histórico
- Páginas são difíceis de serem marcadas Favoritas
- WebCrawlers não executam Javascript
- Smartphones podem não suportar XMLHttpRequest
- Pode haver um excesso de requisições ao servidor
- Código complexo pode ser difícil de manter, debugar e testar
XMLHttpRequest
- O objeto de JavaScript pra realizar requisições sem
recarregar a página
- Um dos parâmetros que recebe pra abrir uma conexão
(método open()) é um boolean indicando se a requisição é
sincrona ou asíncrona
- Requisições sincronas bloqueiam (travam) a página até a
requisição concluir
- Se a requisição for asíncrona a página não é bloqueada e
o cliente pode continuar navegando enquanto a requisição é
realizada: isso é AJAX
XMLHttpRequest
interface XMLHttpRequest : XMLHttpRequestEventTarget {
// event handler attributes
attribute Function onreadystatechange;
// states
const unsigned short UNSENT = 0;
const unsigned short OPENED = 1;
const unsigned short HEADERS_RECEIVED = 2;
const unsigned short LOADING = 3;
const unsigned short DONE = 4;
readonly attribute unsigned short readyState;
// request
void open(DOMString method, DOMString url);
void open(DOMString method, DOMString url, boolean async);
void open(DOMString method, DOMString url, boolean async, DOMString? user);
void open(DOMString method, DOMString url, boolean async, DOMString? user, DOMString? password);
void setRequestHeader(DOMString header, DOMString value);
void send();
void send(Document data);
void send([AllowAny] DOMString? data);
void abort();
// response
readonly attribute unsigned short status;
readonly attribute DOMString statusText;
DOMString getResponseHeader(DOMString header);
DOMString getAllResponseHeaders();
readonly attribute DOMString responseText;
readonly attribute Document responseXML;
};
XMLHttpRequest
Bibliotecas Mais Utilizadas
- JQuery:
$.ajax();
- MooTools
new Ajax();
- Prototype
new Ajax.Request();
- Extjs
Ext.Ajax.request();
- Dojo
dojo.xhrPost() e dojo.xhrGet();
Exemplo de Código
<html>
<head>
<script type="text/javascript">
function loadXMLDoc() {
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
</script>
</head>
<body>
<div id="myDiv"><h2>Let AJAX change this
text</h2></div>
<button type="button"
onclick="loadXMLDoc()">Change
Content</button>
</body>
</html>
document.getElementById("myDiv").innerHT
ML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
}
http://www.w3schools.com/ajax/tryit.asp?filename=tryaja
x_first
Exemplo Prático
Aplicações de Grande Porte
Aplicações de Grande Porte
Referências
Wikipedia (en)
http://en.wikipedia.org/wiki/Ajax_(programming)
Wikipedia (en)
http://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)
W3Schools.com
http://www.w3schools.com/ajax/default.asp
W3C
http://www.w3.org/TR/XMLHttpRequest/
AJAX
Rodrigo Vronscki Ricardo
Roger de Córdova Farias
Ronny Fernandes da Cruz
Tiago Coelho
Download

AJAX