Professional Documents
Culture Documents
Ajax e PHP
Juliano Niederauer
Novatec
1 O que é Ajax?
O
L
U
T
Í
P
A
C
NAVEGADOR CLIENTE
Solicitação SERVIDOR
HTTP
Dados HTML
Banco de dados e
processos do servidor
17
18 Web Interativa com Ajax e PHP
Esse sistema ainda está em uso, porém os designers e desenvolvedores sempre questio-
naram se esse inconveniente chama-responde teria m. Por diversos atores, geralmente
eles recebiam um não como resposta.
Mesmo com a evolução dos navegadores (browsers), ainda havia muitas restrições,
como, por exemplo, as incompatibilidades com o sistema operacional e com o nave-
gador do usuário, alta de plug-ins instalados na máquina-cliente e baixa qualidade
das conexões utilizadas pelos usuários. Diante dessas restrições, os desenvolvedores
trabalharam no sentido de melhorar o modelo de interação da web, mesmo dentro do
sistema chama-responde. Assim, oram criando novas técnicas para tornar as aplicações
mais interessantes e azer com que elas se tornassem tão úteis quanto suas aplicações
equivalentes para desktop.
Podemos dizer que uma dessas técnicas, denominada Ajax, apesar de existir há bas-
tante tempo, só ganhou notoriedade quando aquelas antigas restrições começaram a ser
superadas. Assim como ocorreu na época em que os navegadores passaram a suportar
tecnologias como CSS e XHTML, a possibilidade de utilizar o Ajax nos principais na-
vegadores oi comemorada pelos desenvolvedores, de modo que o principal beneciado
com a adoção dessa erramenta será o usuário nal, pois a fexibilidade do Ajax irá
conerir uma grande agilidade à atualização das inormações na web.
O modelo de uma aplicação que utiliza Ajax está representado na Figura 1.2.
NAVEGADOR CLIENTE
Interface do usuário
Banco de dados e
processos do servidor
Veja que, nesse modelo, a interação entre o navegador e o servidor web não ocorre
de orma totalmente direta, mas por meio da erramenta Ajax. E como o Ajax é ativado
por uma chamada JavaScript, o usuário pode permanecer visualizando a página nor-
malmente enquanto ocorre a comunicação com o servidor web.
O servidor processa a solicitação do Ajax (por exemplo, realizando alguma pesquisa
ou simplesmente atualizando alguma inormação no banco de dados) e envia uma
resposta. Caso o servidor retorne dados, o Ajax poderá utilizar esses dados para azer
a atualização de apenas uma parte da página que o usuário está visualizando, sem
Capítulo 1 • O que é Ajax? 19
que seja necessário recarregá-la totalmente. Caso contrário, o usuário também poderá
continuar usuruindo normalmente da página, mas ela não sorerá qualquer alteração
visual. Ou seja, é como se a página pudesse “ouvir” e “alar” simultaneamente.
Portanto, é notável que essa orma de interação entre cliente e servidor possibilitará
não apenas a agilidade na atualização de inormações na web, mas evitará também a
retransmissão desnecessária de inormações estáticas (códigos, textos, imagens etc.),
melhorando o tráego da rede e a usabilidade das páginas, que carão muito mais
parecidas com aplicações do que com simples páginas da internet.
Conorme oi comentado no início do livro, o Ajax já existe há bastante tempo, mas
sua diusão dependia do momento da web e das nossas habilidades em lidar com as
tecnologias envolvidas nesse processo. Finalmente percebemos que a web está passan-
do por esse processo de mudança e já estamos muito mais aptos a trabalhar com as
tecnologias disponíveis nessa área. Veremos a seguir, como exemplo, algumas situações
onde seria interessante o uso do Ajax.
Assim, cada amigo relacionado a esse usuário poderá ser classicado por ele de
acordo com essa legenda, como mostra a Figura 1.4.
Portanto, o cliente deverá digitar seu CEP, clicar no botão Ok e aguardar até que a
página seja recarregada com o valor do rete calculado pelo sistema. Se osse utilizado
o Ajax, no momento em que o cliente clicasse no botão Ok, haveria uma comunicação
via JavaScript com o servidor para obter o valor do rete, que seria mostrado na tela por
meio do Ajax, enquanto o resto da página permaneceria inalterado.
O mesmo procedimento poderia ser utilizado no caso de uma enquete, Figura 1.6.
No momento em que o usuário respondesse a pergunta, marcando uma das opções,
seria atualizada apenas a parte da página que contém essa enquete. Assim, estaríamos
evitando o recarregamento desnecessário de muito conteúdo, principalmente se or um
grande portal.
Além das aplicações citadas, são inúmeras as situações onde poderíamos utilizar
o recurso do Ajax. Por exemplo, mais adiante veremos como criar uma tabela on-line
editável e um sistema de sugestões para erramentas de busca.
Capítulo 1 • O que é Ajax? 23
Portanto, Ajax não é somente um novo modelo, mas também uma iniciativa na
construção de aplicações web mais dinâmicas e criativas. O Ajax permite que várias
tecnologias trabalhem juntas, cada uma azendo sua parte, conerindo ao desenvolvedor
meios poderosos para a criação de websites.
Javascript
Perceba que todo o processo gira em torno da linguagem JavaScript, pois toda a
comunicação entre o usuário e o servidor ocorrerá por meio dessa linguagem, a par-
tir da qual o Ajax será ativado. Talvez a maior novidade apresentada na gura seja o
XMLHttpRequest, que é justamente a tecnologia que viabiliza o processo inteiro. Trata-se
de um objeto JavaScript que torna possível a comunicação assíncrona com o servidor,
sem a necessidade de recarregar a página por completo.
Algumas pessoas acham que XMLHttpRequest, objeto integrante da especicação do
modelo DOM (Document Object Model), é apenas um outro nome para o Ajax, porém,
como você pode ver na Figura 1.9, é apenas uma parte desse processo, que consiste em
agregar diversas tecnologias para conerir interatividade à aplicação web.
24 Web Interativa com Ajax e PHP
NAVEGADOR SERVIDOR
ENTRADA
Página Sessão do
inicial usuário
Página
web
Página Dados do
web usuário
SAÍDA
Página de
saída Banco de
dados
No caso de uma aplicação Ajax, parte da lógica da aplicação é movida para o nave-
gador (por meio da linguagem JavaScript). Nesse novo cenário, quando o usuário entra
no site ou inicia uma sessão, o servidor envia ao navegador um documento mais com-
plexo, ormado em grande parte por código JavaScript. A idéia é que esse documento se
torne a aplicação do cliente, permanecendo com ele por toda a sessão, mesmo que seja
necessário alterar consideravelmente sua aparência em determinados momentos.
Essa aplicação terá a capacidade de tratar as inormações ornecidas pelo usuário,
decidindo se elas devem ser manipuladas no lado cliente ou no lado servidor, ou ainda
se ará uma combinação dessas duas alternativas. Por exemplo, se houver necessidade de
acessar um banco de dados, a aplicação envia uma requisição ao servidor, caso contrário
ela mesma realiza o tratamento das inormações.
Isso signica que nesse novo modelo o navegador pode armazenar dados sobre o
estado da aplicação, visto que o mesmo documento persiste sobre toda a sessão do
usuário. No caso de um web site de comércio eletrônico, por exemplo, o conteúdo de
um carrinho de compras poderia ser armazenado no próprio navegador em vez de ser
armazenado na sessão do servidor. A Figura 1.11 ilustra como ocorre o fuxo de inor-
mações na web por meio do uso do Ajax.
Perceba que, quando o cliente entra no site, o servidor retorna um documento mais
complexo, que será a aplicação do cliente. Ao contrário do modelo clássico, a aplicação
do cliente é ormada por apenas uma página, que envia reqüentes requisições ao ser-
vidor. Essas requisições, que são eitas de orma assíncrona pelo objeto XMLHttpRequest,
podem ser utilizadas para executar diversas operações, como, por exemplo, consultas e
atualizações nos bancos de dados localizados no servidor.
26 Web Interativa com Ajax e PHP
NAVEGADOR SERVIDOR
ENTRADA
Página Sessão do
Retorna a
(aplicação) usuário
aplicação
do cliente
Requisições
Alguns freqüentes
dados do
usuário Dados do
usuário
SAÍDA
Página de
saída Banco de
dados
Veja também que nesse modelo existe um repositório de dados no próprio navegador,
no qual serão armazenadas inormações relativas às ações que o usuário executou. Assim,
o desenvolvedor pode decidir se acha mais conveniente armazenar uma inormação no
lado cliente ou na sessão do usuário localizada no servidor.
Para isso, quando o usuário entrar no site, seu navegador receberá uma página com
uma grande camada de lógica (JavaScript), como mostra a Figura 1.13:
Assim, ao longo da navegação do usuário pela aplicação, o que irá traegar entre o
navegador e o servidor são basicamente dados, além de uma quantidade mínima de
instruções de apresentação. Ao comparar os dois grácos apresentados, podemos per-
ceber que o primeiro modelo transere muito mais inormações que o segundo. Essa
dierença é ilustrada pela Figura 1.14.
Perceba que em uma aplicação web clássica aumenta consideravelmente a quantidade
de inormações transeridas ao longo da navegação do usuário. Já a aplicação Ajax não
transere inormações desnecessárias, resultando em muito menos tráego acumulado
ao longo da navegação.
28 Web Interativa com Ajax e PHP
Isso ocorre porque, em uma aplicação Ajax, o tráego tem sua maior intensidade no
início, com um documento complexo sendo entregue quando o usuário entra no site.
As comunicações subseqüentes com o servidor são muito mais ecientes. Ou seja, à
medida que o tempo de interação aumentar, o custo da largura de banda será menor
na aplicação Ajax do que na sua aplicação clássica equivalente.
Portanto, para melhorar a interatividade com o usuário, é undamental que o servidor
retorne apenas as inormações relevantes à aplicação no momento. Esse retorno pode
ser eito de diversas ormas, como, por exemplo, pela utilização de um arquivo XML.
Mais adiante veremos detalhes sobre as ormas de retorno e em quais situações é inte-
ressante o uso de cada um delas. De qualquer orma, podemos dizer que qualquer um
dos ormatos escolhidos será mais eciente do que a mistura de inormações retornadas
por uma aplicação web clássica.
usuário, como caixas de texto, listas de seleção, botões de rádio e caixas de checagem
(checkboxes). Entretanto, esses componentes não são sucientes para garantir uma boa
interatividade com o usuário. Não existem, por exemplo, tabelas para edição (grids),
caixas de combinação ou controles de seleção em árvores como existem nas aplicações
para desktop.
Outra possibilidade que os hiperlinks e ormulários nos oerecem é de apontá-los
para uma unção JavaScript. Essa é uma técnica bastante comum em páginas web para
realizar validações de ormulários no próprio navegador do usuário, as quais, apesar de
incluírem a vericação de campos vazios, valores ora de intervalo e assim por diante,
para posteriormente os dados serem submetidos ao servidor, são insucientes, pois o
código JavaScript só roda no navegador, ou seja, antes da página ser enviada. Portanto,
depois que a página or enviada, o usuário terá de aguardar uma validação extra no
lado servidor, a m de vericar se não houve uma tentativa de burlar a segurança da
aplicação.
No caso do Ajax, a interação com o usuário tende a ser fexível, contínua e a fuir de
orma mais amigável. Não será mais necessário aguardar ao clicar em um hiperlink ou
submeter um ormulário. Conceitos mais sosticados, como, por exemplo, o “arrastar
e soltar”, tornam-se praticáveis, azendo com que a interace se assemelhe à interace
de uma aplicação para desktop. Dessa orma, torna-se possível combinar a interação
do usuário e as solicitações ao servidor de maneira mais completa. Portanto, o modelo
proposto pelo Ajax habilita o servidor a trabalhar de orma conjunta com o usuário,
proporcionando a este uma experiência muito mais agradável.
try {
req = new XMLHttpRequest(); // Mozilla, Safari,...
} catch(exc) {
alert(“Este browser não tem recursos para uso do Ajax!");
req = null;
}
}
}
return req;
}
Não se preocupe em entender esse programa agora. Esse é um pequeno script uti-
lizado para eetuar uma requisição com o Ajax. Apenas note que são eitas tentativas
de criação do objeto para dierentes navegadores (uma para o Internet Explorer, outra
para o Mozilla e assim por diante).
Detalhes como esse aumentam a complexidade de programação, e por isso torna-se
necessário o uso de plataormas mais adequadas e de boas erramentas de desenvolvi-
mento, visando a diminuição no índice de erros.
Outro aspecto a ser analisado é a questão da acessibilidade de uma aplicação que
utiliza Ajax. Os desenvolvedores se mostram preocupados ao lidar com questões que
possam limitar o uncionamento da aplicação. Por exemplo, “será que o botão Voltar
do navegador deixará de uncionar? E será que a aplicação irá uncionar para usuários
que desabilitaram o JavaScript de seus navegadores? Além disso, que tipo de cuidados
devemos tomar para garantir a segurança de uma aplicação Ajax?”.
É claro que ainda há muito trabalho a ser eito para determinar as limitações do
Ajax, porém, à medida que esse novo modelo or ganhando popularidade, os desenvol-
vedores irão cada vez mais trabalhar em meios de lidar com eventuais diculdades de
uso dessa erramenta, ou seja, assim como ocorre com qualquer novidade no mundo
da programação, o crescimento da comunidade de desenvolvedores desvendará muitas
dessas questões, tornando a erramenta mais eciente ao longo do tempo.
Benefícios Desvantagens
•Utilizarsoftwareson-linerequerumaconexãodealta
•Ousodesoftwareson-lineeliminanãosóoscustosde
velocidade.Asconexõesdebandalargavêmcrescendo
licençaparainstalaçãonasmáquinas,mastambémo
rapidamentenomundotodo,masgrandepartedos
tempoperdidonesseprocessodeinstalação.Ousuário
usuáriosdeinternetaindautilizaconexõesdiscadas.
poderápagarapenasdeacordocomseutempode
utilização. • Se a conexão cair, o usuário terá seu trabalho
interrompidoepossivelmenteperderádadosnão
•Asatualizaçõesdossoftwaressãofacilitadas,pois
salvos.
ocorremon-line.
•Comoosdadossãoarmazenadosnoservidor,surge
•Osdadospodemsersalvosnoservidoreacessados
aquestãodaprivacidade.Porexemplo,aempresa
dequalquercomputadorcomconexãoàinternet.Além
responsávelpeloservidorteráacessoainformações
disso, eles cam protegidos em relação a falhas no HD
que podem ser condenciais para o usuário. Além disso,
dousuário.
existeoriscodeinvasãodoservidoreroubodedados.
É notório que o modelo clássico (baseado em páginas) não nos permite reproduzir
com eciência os aplicativos do desktop na web. Por exemplo, é diícil imaginar um
sotware com todos os recursos do CorelDraw rodando no próprio navegador do
usuário.
Surgem então os questionamentos: “Será que demorará para a web atingir esse
nível e reproduzir elmente as aplicações desktop? E será que não cará pesado para
o navegador carregar essas aplicações?”. São perguntas diíceis de serem respondidas,
mas sabemos que o Ajax já está acelerando esse processo. Quanto ao carregamento da
aplicação, a idéia é carregar no navegador apenas os recursos necessários para as ações
Capítulo 1 • O que é Ajax? 37
para que o Apache seja iniciado corretamente. Para vericar se o Apache está
rodando, abra seu navegador e digite na barra de endereços:
http://localhost/
Deve aparecer uma página indicando que o Apache está em execução (Figura 1.19).
Para que suas aplicações possam ser acessadas pelo navegador, elas devem ser
colocadas na pasta raiz do servidor (DocumentRoot), por padrão chamada de htdocs.
Por exemplo:
C:\Arquivos de programas\Apache Group\Apache2\htdocs
A pasta raiz pode ser modicada por meio da alteração do valor da diretiva
DocumentRoot do arquivo de conguração httpd.conf.
A primeira linha carrega o módulo do PHP, a segunda az com que o Apache
reconheça os scripts com extensão .php, e a terceira indica a localização do ar-
quivo de conguração php.ini. Consulte o arquivo install.txt para orientações
quanto a outras versões. Após incluir as linhas, reinicie o Apache para que elas
tenham eeito.
5. Confguração do MySQL no PHP – para nalizar, precisamos habilitar a extensão do MySQL
no arquivo de conguração do PHP, o php.ini. Neste livro, utilizaremos a extensão
mysqli, visto que nossa versão do MySQL é superior a 4.1, e, portanto, a antiga extensão
do MySQL não uncionará. A linha que habilita essa extensão é:
extension=php_mysqli.dll
Se essa linha estiver comentada, retire o comentário. Caso ela não exista, deve ser
inserida. Se sua versão do MySQL or anterior a 4.1, habilite o arquivo php_mysql.
dll em vez do php_mysqli.dll. Verique ainda se a diretiva extension_dir está apon-
tando para o diretório correto das extensões do PHP (normalmente chamado de
“ext”). Por exemplo:
extension_dir = “C:/PHP/ext/"