Apostila Básica de AJAX - Carlos Majer
Apostila Básica de AJAX - Carlos Majer
Apostila Básica de AJAX - Carlos Majer
Licença de Uso
Este trabalho está licenciado sob uma Licença Creative Commons: Atribuição-Compartilhamento pela mesma
Licença 2.5 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-
sa/2.5/br/ (em português) ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford,
California 94305, USA.
Isto significa que você poderá copiar, distribuir, exibir e realizar trabalhos derivados desta obra com as
seguintes restrições:-
Você deverá sempre fazer referência ao autor: Carlos Majer
O texto “Documento disponível em http://www.carlosmajer.com.br/“ deve
ser mencionado ao menos uma vez neste documento (Este é o Termo de
Licença para uso deste documento), podendo ser no rodapé das páginas, na
primeira ou última página do documento de projeto. Caso venha a ter alguma
dúvida contate-me diretamente.
Você não poderá utilizar este trabalho para fins ilegais, imorais ou de forma a
denegrir ou prejudicar outras pessoas ou instituições.
Caso acredite que este material tenha lhe ajudado, envie um e-mail de agradecimento. Isto é o suficiente para motivar-
me a continuar desenvolvendo este tipo de material e disponibilizá-lo para o público. Caso note algum erro ou tenha
alguma sugestão, sinta-se à vontade para me contatar.
AJAX
Asynchronous Javascript and XML
Introdução
Este é um artigo que visa introduzir a utilização de AJAX ao desenvolvedor web. Para isto, o estudante deve
atender alguns pré-requisitos:-
Conhecimento mínimo para criação de elementos de formulários HTML
Conhecimento mínimo de funcionamento do Javascript (estrutura, condições, laços, criação de
variáveis, etc.)
Conhecimento básico do DOM – Document Object Model, para poder acessar os objetos criados na
página HTML.
Como o exemplo é em PHP, pressupõe-se que o desenvolvedor tenha conhecimento desta
linguagem. Caso isto não ocorra, mas ele tenha conhecimento em outras linguagens de
programação web, ele poderá, por analogia, entender o que a página PHP está fazendo.
Caso não tenha ainda estes conhecimentos, busque-os e depois consulte esta apostila.
Vamos lá?
AJAX é um acrônimo para Javascript Assíncrono e XML, ou seja, o uso de tecnologia existente (Javascript e
XML) de uma forma inovadora e que veio para mudar a maneira pela qual os desenvolvedores efetuam
certos trabalhos na Internet.
Utilizado inicialmente pelo Microsoft Internet Explorer® e adotado posteriormente pelos demais
navegadores, o AJAX é uma forma inovadora de uso de Javascript e XML que permite a criação de um
objeto Ajax (Javascript). Este objeto consegue acessar outra página e receber o retorno de informação
(sem sair da primeira página).
A informação recebida pode ser tratada dentro do código (da página onde o objeto existe) permitindo ao
desenvolvedor uma forma inovadora na criação de sua interface de forma a enriquecer e agilizar a
experiência do usuário dentro do sistema.
Uma das características deste objeto é que o mesmo pode comportar-se de uma forma assíncrona em
relação à página HTML, isto é, enquanto a página continua a ser carregada (parcialmente ou totalmente) o
objeto funciona em paralelo, correspondendo-se com a página destino até receber a informação desejada
(ou algum erro ocorrer).
Javascript
O Javascript é a nossa velha linguagem de script para navegadores. É nela que criamos nosso objeto AJAX.
XML (Extensible Markup Language)
A Linguagem de Marcas Extensível tal como o HTML é baseada no padrão SGML (Standard Generalized
Markup Language) e foi criada para facilitar a troca de dados. O AJAX por padrão transfere os dados de um
local para outro usando XML. Além do XML existe a possibilidade de receber as informações em formato
texto.
Um exemplo clássico é o do típico cadastro de um novo usuário num site. O usuário informa sua
identificação (também conhecida como login ou ID) e demais dados.
Neste momento, o usuário deverá preencher as informações do formulário. Note que o formulário pode ter
validações internas em javascript para, por exemplo, consistir se os campos obrigatórios foram
informados.
Nota:: Veja no final deste artigo informações para criação (banco de dados, páginas, etc.) dos exemplos
informados.
Em seguida o usuário volta à tela anterior e altera sua identificação (e informa novamente a senha),
efetuando todo o processo novamente.
novamente
Este tipo de experiência pode fazer com que o usuário se irrite levando-o
levando o a desistir do uso da ferramenta.
Este processo pode ser moroso. Para se chegar ao destino (a segunda página), diversos caminhos poderão
ser percorridos
idos na Internet (Tente executar o comando tracert WWW.uol.com.br para entender isto).
Esta segunda página usualmente gera uma página resultante que é enviada ao usuário (máquina-cliente).
(máquina
O resultado, em muitos casoss é um aviso de que a identificação informada pelo usuário não está disponível
para uso (porque já existe outro usuário com esta identificação), de forma que o usuário tem que, de
alguma forma, retornar à página anterior e digitar outra identificação/login e novamente tentar concluir seu
cadastro. Tedioso não?
Com isto, o usuário poderá saber de antemão se o processo de cadastro de um novo usuário irá funcionar.
O usuário digita sua identificação (desejada). Ao sair da caixa de texto, um ícone animado é exibido, para
que o usuário saiba que algo está ocorrendo (O texto Carregando... também poderia ter sido utilizado).
O objeto AJAX é criado e executa uma página dinâmica (neste exemplo em PHP) que abre o banco de
dados e efetua a busca da identificação digitada numa tabela. Em seguida,, a página retorna um SPAN
contendo uma string ao objeto AJAX representando o resultado da consulta (neste
neste caso o texto Disponível
ou Indisponível).
Assim que o objeto AJAX tem o retorno do resultado, ele insere o mesmo dentro de uma área (um SPAN
identificado como aviso) previamente
reviamente criada para receber esta informação:-
informação:
ID já existente
ID não existente
Irei explicar mais à frente esta página em detalhes. Vamos verificar agora como funciona o processo passo a
passo.
Perceba que:-
1) O evento onBlur (que é acionado quando um objeto perde o foco) da caixa de texto idUsuario está
sendo interceptado e redirecionado para uma função Javascript,de nome ChecaUsuario() (a ser
criada). Isto fará com que toda vez que se sair deste objeto, a função ChecaUsuario() será
executada. Dentro dela será criado e executado o objeto AJAX.
2) Um elemento do tipo SPAN foi criado, sem nenhum conteúdo. Este elemento será utilizado pelo
objeto AJAX para:-
a. Assim que ser executado, irá armazenar uma imagem (gif animada) que dará a impressão
ao usuário de que algo está ocorrendo (neste caso, a verificação do id do usuário). O
desenvolvedor poderá trocar esta imagem pelo texto Carregando..., ou colocar outra
imagem, caso prefira.
Ao visualizarmos a típica imagem da bolinha girando, pensamos que a página tem controle exato sobre
a operação que está sendo realizada.
A verdade é que não existe um controle de quanto tempo levará para que o objeto AJAX finalize seu
processo.
Ao se inserir uma imagem logo no início do processo, ela permanecerá sendo exibida durante todo o
procedimento até que o desenvolvedor altere o conteúdo do SPAN criado (geralmente inserindo uma
indicação do resultado esperado).
Observação: O código Javascript pode estar dentro da página HTML ou num arquivo separado.
1) O objeto da caixa de texto de identificação perde o foco (quando usuário tecla TAB ou clica em
outro local do formulário). Ao fazer isto, o evento onBlur da caixa de texto acionará a função
ChecaUsuario().
2) Dentro da função, o objeto AJAX é criado. A primeira ação que este objeto executa é a inserção de
uma imagem no objeto SPAN (que que está localizado ao lado da caixa de texto de identificação)
identificação para
passar ao usuário a impressão de que algo está ocorrendo.
3) O objeto AJAX continua seu trabalho executando uma página PHP que irá se conectar no Servidor
MYSQL para localização da identificação digitada, no banco de dados.
da
Perceba que apesar deste processo estar mais ágil, o usuário só saberá se conseguiu gravar o ID após clicar
no botão Cadastrar, ou seja, existe ainda a possibilidade de que, no espaço de tempo que o usuário levou
para preencher os demais dados e clicar no botão Cadastrar, um segundo usuário pode ter feito um
cadastro usando o mesmo ID e cadastrado antes do primeiro ter finalizado.
Revendo o funcionamento
A função (javascript) que cria o objeto AJAX é a ChecaUsuario().
Esta função é sempre executada quando o usuário sai da caixa de texto de identificação do usuário, ou
seja, quando esta caixa de texto perde o foco (evento
( onBlur).
Sempre que esta função for executada, ela criará um objeto AJAX que fará um acesso a uma página PHP
que irá buscar no banco de dados
ados a informação de existência ou não da identificação do usuário.
Assim que o objeto AJAX receber o resultado da página PHP ele irá inserir a informação de disponibilidade
ou indisponibilidade no SPAN localizado ao lado da caixa de texto de identificação.
identificaçã
Vamos entrar agora no detalhe de funcionamento da função ChecaUsuario() que faz a criação do objeto
AJAX.
Naturalmente, um objeto AJAX deve ser criado dentro do Javascript. Como mencionei anteriormente, a
maneira pela qual criamos o objeto AJAX depende do navegador.
O objeto AJAX é criado através de um comando Javascript do navegador. Conforme o navegador utilizado
pelo usuário, e em alguns casos a versão, o comando pode ser diferente.
No Internet Explorer, você poderá encontrar variações nos comandos para a criação do objeto AJAX
através dos diversos objetos ActiveXObject disponibilizados. Iremos estudar alguns destes casos logo a
seguir.
Como fazer então para se criar um objeto AJAX independente do navegador que o usuário está utilizando?
Iremos utilizar de tentativa e erro, isto é, tentaremos criar o objeto AJAX assumindo que um determinado
navegador está sendo utilizado. Caso o comando de criação do objeto que iremos utilizar não existir no
navegador do usuário, um erro será gerado.
Utilizaremos então o bloco Try /Catch do Javascript que nos permitirá tentarmos criar o objeto AJAX de
uma determinada forma. Caso ocorra algum erro, o fluxo do programa será desviado para outra seção do
código Javascript na qual tentaremos criar o objeto AJAX de outra forma (e assim consecutivamente) até
que consigamos (ou não) definitivamente criar o objeto AJAX.
function ChecaUsuario()
{
// PASSO 1 – Tentativa de Criação do objeto AJAX
try
{
objetoAJAX = new XMLHttpRequest()
}
catch(e1)
{
try
{
objetoAJAX = new ActiveXObject("Msxml2.XMLHTTP")
}
catch(e2)
{
try
{
objetoAJAX = new ActiveXObject("Microsoft.XMLHTTP")
}
catch(e3)
{
objetoAJAX = false
}
}
}
......
Antes de tudo precisamos dar um nome ao objeto AJAX que iremos utilizar neste exemplo. Decidi nomear
este objeto como objetoAJAX.
No primeiro bloco try/catch tentamos criar o objeto AJAX através da chamada à função
XMLHttpRequest(), a qual só funcionará nos navegadores Firefox, Safári e Ópera. Veja:-
try
{
objetoAJAX = new XMLHttpRequest()
}
Caso o navegador seja outro (esta função não exista no navegador do usuário) um erro será gerado, o que
fará com que o fluxo do programa seja desviado para o bloco de comandos logo abaixo da instrução
catch(e1).
Tentaremos agora criar o objeto AJAX através da chamada à função ActiveXObject tentando criar um
objeto AJAX através do parâmetro Msml2.XMLHTTP (veja abaixo). Este objeto é reconhecido pelo Internet
Explorer a partir da versão 5.5:-
try
{
objetoAJAX = new ActiveXObject("Msxml2.XMLHTTP")
}
Caso novamente não funcione (O IE é menor ou igual à versão 5.0, ou o navegador do usuário não é o IE),
o fluxo do programa será desviado para o bloco de comandos abaixo da instrução catch(e2).
Tentaremos agora criar o objeto AJAX usando a mesma função (ActiveXObject) mas informando um
parâmetro diferente (do comando anteriormente executado), que as versões do IE abaixo da 5.5 conhece:-
try
{
objetoAJAX = new ActiveXObject("Microsoft.XMLHTTP")
}
1) Ou o usuário não está usando nenhum dos navegadores acima informados (que compõe a maioria
dos navegadores em uso no mundo)
2) Ou o desenvolvedor digitou algo errado no Javascript, após o primeiro bloco Try/Catch, o que está
fazendo com que, em qualquer erro gerado, o fluxo do programa seja desviado para outra seção do
programa. Sugiro que você reveja o seu código Javascript e resolva o problema antes de colocar a
página no ar.
Caso haja um problema, o próximo bloco try/catch será executado. Após a instrução catch(e3) faço com
que o objeto Ajax fique setado com o valor em falso de forma a interromper qualquer trabalho a ser feito
com ele posteriormente na página.
objetoAJAX = false
O objetivo na criação do objeto AJAX era informar ao usuário se a identificação que ele estava digitando
está disponível ou não para seu uso. Podemos então verificar que este procedimento estava trazendo uma
comodidade ao usuário. Caso não consigamos fazer com que o mesmo funcione, o impacto será pequeno,
uma vez que o usuário ainda poderá preencher os dados do formulário e tentar cadastrar.
O máximo que pode acontecer é o que já foi descrito anteriormente, isto é, o usuário terá que informar
outra identificação caso a mesma já exista no banco de dados.
objetoAJAX = false
}
}
}
// Se consegui criar o objeto AJAX
if(objetoAJAX)
{
var objSpan =document.getElementById("aviso")
objSpan.innerHTML="<img src='ajax-loader.gif'>"
......
1) Verificamos se o objeto objetoAJAX não é falso (Quando não conseguimos criar o objeto AJAX
deixo ele com o valor false – veja acima).
2) Criamos a variável objSpan que aponta para objeto SPAN chamado aviso (objeto vazio localizado
ao lado da caixa de texto de identificação do usuário). Qualquer alteração efetuada nesta variável
propaga-se no objeto destino, como se estivéssemos trabalhando com o próprio objeto SPAN
(chamado aviso*).
3) Como este objeto é um SPAN, iremos alterar sua propriedade innerHTML que é a propriedade que
armazena seu conteúdo, que além de texto pode conter código HTML**.
* Para mais informações procure por DOM – Document Object Model, na Internet.
** A propriedade innerHTML de um objeto SPAN ou DIV aceita comandos em HTML e executa-os.
Ao sair desta linha, este objeto irá tentar carregar a imagem ajax-loader.gif
}
}
// Se consegui criar o objeto AJAX
if(objetoAJAX)
{
var objSpan =document.getElementById("aviso")
objSpan.innerHTML="<img img src='ajax-loader.gif'>"
src='ajax
A rotina acima está pegando o valor (value) do objeto idUsuario (do formulário da página HTML) e inserindo
este valor na variável txtUsuario que será utilizada nesta rotina (Javascript).
(Javascript). No exemplo acima, esta
e
variável conterá a string “Carlos”.
Precisamos chamar esta página passando-lhe a identificação que foi digitada pelo usuário (que neste
exemplo é a string “Carlos”).
Para isto, iremos utilizar o método GET. Este é um dos métodos de envio de informação entre páginas e
pode ser utilizado dentro de um formulário (Exemplo: <form action=”...” method=”GET”>) ou através de
uma URL (endereço).
2) ? Logo após o nome da página, insira um ponto de interrogação. Este ponto de interrogação é
um caractere especial que funciona como aviso ao navegador de que um elemento está sendo
enviado através do método GET.
3) <nome do elemento > Após o ponto de interrogação vem o nome do elemento que está sendo
enviado ao navegador. (Exemplo: pagina.php?idade)
4) <valor> Representa o valor do elemento enviado (Exemplo: pagina.php?idade=22)
5) & Logo após o valor do primeiro elemento, caso se deseje passar mais algum elemento, insira
um e comercial. Este & é um caractere especial que funciona como aviso ao navegador de que mais
um elemento será enviado.
6) <valor> Representa o valor do (segundo) elemento enviado (Exemplo:
pagina.php?idade=22&nome=Joana)
No exemplo abaixo estaremos criando o código Javascript para montagem de uma variável (chamada
enderecoURL).
Esta variável será composta do nome da página localizaUsuario.php (que não muda) somada com a
string codigo (nome que decidi aplicar no elemento utilizado pelo Javascript para identificação do usuário) e
em seguida do valor da variável txtUsuario (que contém o que o usuário digitou na caixa de identificação na
página HTML).
localizaUsuario.php?codigo=Jo%E3o
No exemplo acima, caso o usuário digite João na página e caso seu navegador seja o Mozilla Firefox, o
navegador transformará João para Jo%E3o, que é a forma pela qual este navegador consegue transferir
acentos, entre páginas.
Ocorre que a página PHP não conseguirá localizar o código correto (pois o que está cadastrado é João e
não Jo%E3o).
Por outro lado, o Internet Explorer não faz esta alteração no dado enviado.
Para se ter a certeza de que a página funcionará em ambos os navegadores, iremos alterar o envio do dado
escapando-o, isto é, transformando todos os caracteres em códigos especiais de escape e efetuando o
processo inverso na página PHP (veremos adiante).
A partir desta linha o objeto AJAX já está preparado para posteriormente acessar a página de consulta e
começara a aguardar o retorno das informações desta página. (Ele está preparado mas ainda não foi
executado).
O manipulador onreadystatechange
Para isto, iremos trabalhar com o manipulador de eventos onreadystatechange (alguns chamam de
propriedade ou método do objeto AJAX).
Podemos criar uma função e associá-la ao manipulador ou simplesmente inserir uma função dentro do
manipulador (utilizaremos esta forma) para tratar o processo de recebimento de dados pelo objeto AJAX da
página destino.
objetoAJAX.onreadystatechange=function()
{
// O valor 4 na propriedade readyState significa que o objeto já completou/finalizou o
// recebimento de dados
if (objetoAJAX.readyState==4)
{
// 200 = resposta do servidor OK - Lê o texto
if (objetoAJAX.status == 200)
{
var texto= objetoAJAX.responseText
Na primeira linha inserimos uma função no manipulador onreadystatechange. Esta função só será
executada pelo próprio objeto AJAX assim que ele começar a ser executado.
O que precisamos fazer aqui é entender bem o funcionamento desta função, quais são as propriedades mais
importantes, seus valores e para que eles servem.
Propriedade readyState
Esta propriedade define o status do objeto AJAX quanto ao processo de recebimento de dados da página
destino e pode ter os seguintes valores:-
Valor Significado
0 O objeto foi instanciado (criado), mas ainda não foi inicializado
1 O objeto já foi aberto
2 Dados já foram enviados à página destino (solicitação efetuada)
3 Dados estão sendo carregados (o que significa que a operação está em operação)
4 O objeto está finalizado, o que significa que o recebimento de dados finalizou
Para nós, o que interessa é quando a propriedade readyState esteja com valor igual a quatro, o que
significa que o processo já finalizou e a informação (caso não tenha havido nenhum problema) está
disponível para uso.
A propriedade readyState do objeto AJAX, enquanto não estiver com o valor 4 (que significa que
a operação foi finalizada) significa que a operação está em andamento. Como o objeto foi criado de
forma assíncrona, ele continua aguardando o resultado que será enviado pela página PHP.
Propriedade status
Esta propriedade armazena o resultado do acesso à página destino do objeto AJAX.
Seus valores mais comuns são:-
Valor Significado
200 OK – página encontrada e executada
403 Forbidden – conteúdo proibido de ser exibido
404 Not Found – Página não encontrada
O desenvolvedor deve checar qual o valor desta propriedade para tomar a ação devida.
Se o valor desta propriedade for duzentos (200) significa que a página foi encontrada (e executada) de
forma que podemos continuar o procedimento que em geral é utilizar o resultado enviado por página e
armazenado no objeto AJAX.
if (objetoAJAX.status == 200)
.....
Neste exemplo, o programa informa ao usuário que houve falha na tentativa de localização do id do usuário.
A propriedade statusText contém uma descrição mais amigável do texto ocorrido. O desenvolvedor pode
utilizar esta propriedade para exibir o erro em formato texto ao invés de exibir o código do erro ao usuário
final. Exemplo:-
objetoAJAX.onreadystatechange=function()
{
if (objetoAJAX.readyState==4)
{
if (objetoAJAX
objetoAJAX.status == 200)
{
var texto= objetoAJAX.responseText
......
A propriedade responseText do objeto AJAX, armazena o que foi recuperado da página consultada, em
formato de texto.
Esta variável irá armazenar o que a página PHP enviou para o objeto AJAX, que neste caso é um comando
HTML contendo um SPAN e o texto Disponível ou Indisponível (texto com estilo CSS embutido).
Vamos guardar este resultado numa variável chamada texto, para podermos utilizá--la posteriormente no
programa.
{
var texto= objetoAJAX.responseText
Além da propriedade responseText, o objeto AJAX tem a propriedade responseXML que contém
a mesma informação recuperada da página consultada, mas em formato XML. Para utilizar o dado
neste formato, o retorno da informação
informação do PHP teria que ser formatado também em XML. Não
pretendo cobrir esta propriedade nesta apostila.
Tratando a falha
Como informado anteriormente, caso haja alguma falha na recuperação do objeto da página PHP (Exemplo:
Servidor fora do ar, falha de comunicação, estouro de tempo de acesso, etc.), o objeto ficará com sua
propriedade status diferente de 200 (sucesso). Neste caso, inseri o texto “Falha
Falha na localização do ID:”
ID:
junto com o motivo da falha.
...
else
{
objSpan.innerHTML="Falha na localização do ID:" + objetoAJAX.statusText
}
......
Em alguns casos, pode ser interessante eliminar o trecho de código Javascript acima. Considerando que a
página de cadastro PHP irá fazer a consistência da existência da identificação, sempre que o usuário clicar
no botão Cadatrar, o desenvolvedor pode querer não mostrar nada para o usuário em caso de falha do
AJAX, de forma a não gerar confusão e preocupação ao usuário, no funcionamento da rotina.
Passo 7 - Executar o objeto AJAX
Para finalizar a rotina e fazer com que o objeto AJAX inicie sua execução (acesso à página de consulta),
devemos acionar/executar seu método send().. Este é o método responsável por iniciar o funcionamento do
objeto AJAX. Este método aceita um parâmetro, mas neste caso utilizaremos o valor null como parâmetro,
uma vez que não o utilizaremos.
...
else
{
objSpan.innerHTML="Falha na localização do ID:" + objetoAJAX.statusText
}
}
}
objetoAJAX.send(null)
}
}
</script>
......
Tente identificar quais são as informações que podem ser recuperadas de um banco de dados através do
uso de AJAX para a montagem da interface acima.
Uma possibilidade que existe é a criação de diversos objetos AJAX, cada um dos quais acionando uma
página de consulta específica e recebendo dados diferentes.
Na página apresentada abaixo, temos os seguintes elementos sendo alimentados dinamicamente via AJAX:-
AJAX:
Lista (combo) de códigos de produtos existentes
Nome do produto
Preço do produto
Foto do produto
Descrição do produto
A técnica aqui consiste em criar um objeto AJAX para cada item a ser utilizado. Veja o código a seguir:-
try
{
xmlFoto= new XMLHttpRequest();
xmlTit= new XMLHttpRequest();
xmlPreco= new XMLHttpRequest();
xmlDesc= new XMLHttpRequest();
}
catch(e1)
{
try
{
xmlFoto = new ActiveXObject("Msxml2.XMLHTTP");
xmlTit = new ActiveXObject("Msxml2.XMLHTTP");
xmlPreco = new ActiveXObject("Msxml2.XMLHTTP");
xmlDesc = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e2)
{
try
{
xmlFoto = new ActiveXObject("Microsoft.XMLHTTP");
xmlTit = new ActiveXObject("Microsoft.XMLHTTP");
xmlPreco = new ActiveXObject("Microsoft.XMLHTTP");
xmlDesc = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e3)
{
xmlFoto = null;
}
}
}
No exemplo acima, criamos quatro objetos AJAX, cada um dos quais fará uma chamada a uma página
diferente.
Os exemplos para você fazer os seus testes podem ser encontrados abaixo:-
WWW.carlosmajer.com.br/AJAX
http://www.carlosmajer.com.br/blog/?p=340
Segue abaixo o conteúdo dos arquivos de exemplos de formulário explicados nesta apostila.
Este ambiente irá permitir a execução dos testes utilizando a página em linguagem PHP e a criação do banco
de dados MYSQL explicado abaixo. Caso deseje e tenha conhecimento, o desenvolvedor pode criar uma
página ASP (ao invés da PHP) e criar o banco de dados no SQL Server ou outro banco de dados preferido.
Arquivos deste exemplo
CadastraUsuario.htm - Página de cadastro de usuário com o código AJAX inserido
localizaUsuario.php - Página que localiza o usuário, em linguagem PHP
GravaUsuario.php – Página que grava o usuário no banco, em linguagem PHP
ajax-loader.gif – ícone de simulação de execução ou carregamento .
Utilize as linhas abaixo (copie e cole no prompt do MYSQL) para gerar o banco deste exemplo:-
exemplo:
senha varchar(20),
nome varchar(50),
endereco varchar(50),
cidade varchar(50),
uf varchar(2),
cep varchar(9),
primary key(idUsuario) );
Note que estou utilizando o usuário root e senha em branco para acesso ao MYSQL. Caso seu banco de
dados esteja diferente (usuário/senha), ajuste as linhas de comando de acesso, nas páginas PHP abaixo.
Página CadastraUsuario.htm
<head>
<title>Cadastro de Novo Usuário</title>
<style type="text/css">
body {
font-family: Trebuchet MS, Lucida Sans Unicode, Arial, sans-
serif;
height: 100%;
margin: 0px;
padding: 85px 0px 0px 0px;
text-align:center;
}
form {
margin:0px auto;
text-align:left;
width: 520px;
}
fieldset {
margin: 0px auto;
border-color:silver;
}
label {
display:block;
float:left;
padding-right:10px;
text-align:right;
width:150px;
}
.campos {
background-color:#FFFFCC;
border:1px solid black;
margin-bottom:4px;
}
.obrigatorio{font-weight:bold;}
</style>
<script language="javascript">
<!--
function ChecaUsuario()
{
// PASSO 1 – Tentativa de Criação do objeto AJAX
try
{
objetoAJAX = new XMLHttpRequest()
}
catch(e1)
{
try
{
objetoAJAX = new ActiveXObject("Msxml2.XMLHTTP")
}
catch(e2)
{
try
{
objetoAJAX= new ActiveXObject("Microsoft.XMLHTTP")
}
catch(e3)
{
objetoAJAX = false
}
}
}
else
{
objSpan.innerHTML="Falha na localização do
ID:" + objetoAJAX.statusText
}
}
}
// Vamos agora iniciar a execução do objeto AJAX
objetoAJAX.send(null)
}
}
-->
</script>
</head>
<body>
<form action="GravaUsuario.php" method="post" name="formUsuario">
<fieldset>
<legend>Dados do Usuário</legend>
<label for="idUsuario"
class="obrigatorio">Identificação*:</label>
<input type="text" name="idUsuario" id="idUsuario"
class="campos" size="20" maxlength="20" onblur="ChecaUsuario()">
<span id="aviso"></span ><br>
</fieldset>
</form>
</body>
</html>
Página localizaUsuario.php
<?php
$conexao = mysql_connect("localhost","root","");
$charset = "iso-8859-1";
$mime = "text/html";
header("Content-Type: $mime;charset=$charset");
mysql_select_db("exemploAjax",$conexao);
if(isset($_GET['codigo']))
{
$cmdSQL = "select * from usuarios where idUsuario='".
$_GET['codigo'] . "'";
$res = mysql_query($cmdSQL) or die(mysql_error());
$linhas = mysql_num_rows($res);
if( $linhas > 0)
{
echo "<span style='color:red;font-weight: bold'>
Indisponível</span>";
}
else
{
echo "<span style='color:green'>Disponível</span>";
}
mysql_close();
}
?>
Página GravaUsuario.php
<?php
$conexao = mysql_connect("localhost","root","");
$charset = "iso-8859-1";
$mime = "text/html";
header("Content-Type: $mime;charset=$charset");
mysql_select_db("exemploAjax",$conexao);
if(isset($_POST['idUsuario']))
{
$res = mysql_query("select * from usuarios where
idUsuario='".$_POST['idUsuario']."'") or die(mysql_error());
$linhas = mysql_num_rows($res);
if( $linhas > 0)
{
echo "Infelizmente o usuário <span style='color:red'>"
. $_POST['idUsuario']."</span> já está em uso. Favor informar outro
usuário.<br>";
echo "Clique <a href='#'>aqui</a> para voltar.";
}
else
{
$codigo=$_POST['idUsuario'];
$nome=$_POST[nome];
$endereco=$_POST[endereco];
$cidade=$_POST[cidade];
$uf=$_POST[uf];
$cep=$_POST[cep];
Conclusão
O uso do Javascript e XML (AJAX) veio para ficar e trazer novas formas de
enriquecer a forma pela qual os usuários interagem na interface. Cabe aos
desenvolvedores o estudo destas tecnologias para se destacarem no
mercado e melhorarem a experiência do usuário nas suas ferramentas.
Dúvidas?
Carlos Majer.