Neste artigo iremos construir uma busca por cada dígito do teclado, com o auxílio do AJAX.
Temos uma página que terá o formulário para a busca e outra que irá receber o dígito e realizar a busca listando os dados encontrados.
Passo 01
Crie o arquivo busca.php e coloque o seguinte formulário e div.
<form name="form" action="" onSubmit="return false">
<input name="nome" value="" onKeyUp="recuperardados()">
</form>
<div id="conteudo">
</div>
A ação onKeyUp irá acessar a função que busca os dados pela palavra que estiver no input, o conteúdo trago irá ficar no lugar do div abaixo.
Passo 02
Abra a tag ainda na página busca.php e insira esse trecho de código dentro que é a nossa função javascript que irá trazer os dados.
function recuperardados() {
var nome = document.form.nome.value;
var ajax = new AJAX();
ajax.Updater("listar.php?digito="+nome,"conteudo","get","carregando os dados...");
}
Na função, recuperamos o valor do input, instanciamos o objeto AJAX e chamamos o método Update passando como parâmetro a página PHP que fará a busca, o nome da objeto html onde o resultado será exibido, o método da busca e a mensagem enquanto os dados são trazidos.
Passo 03
Crie o arquivo ajax.js, inclua esse trecho de código e depois importe esse arquivo em nossa página de busca.
function AJAX() {
this.Updater=carregarDados;
function carregarDados(caminhoRetorno,idResposta,metodo,mensagem) {
var conteudo=document.getElementById(idResposta);
conteudo.innerHTML= mensagem;
var xmlhttp = getXmlHttp();
//Abre a url
xmlhttp.open(metodo.toUpperCase(), caminhoRetorno,true);
//Executada quando o navegador obtiver o código
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4){
//Lê o texto
var texto=xmlhttp.responseText;
//Desfaz o urlencode
texto=texto.replace(/\+/g," ");
texto=unescape(texto);
//Exibe o texto no div conteúdo
var conteudo=document.getElementById(idResposta);
conteudo.innerHTML=texto;
}
}
xmlhttp.send(null);
}
}
function getXmlHttp() {
var xmlhttp;
try{
xmlhttp = new XMLHttpRequest();
}catch(ee){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
}
}
}
return xmlhttp;
}
Temos a função carregarDados que recebe os parâmetros passados na página de busca e traz os dados da nossa página que realiza a listagem.
Passo 04
Crie o arquivo listar.php e coloque o seguinte trecho de código.
Neste arquivo, nós construimos a query que fará a busca pelo parâmetro que nós recebemos da página de busca.
USE test;
CREATE TABLE cliente
(
id int not null auto_increment,
nome varchar(120) not null,
primary key(id)
);
INSERT INTO cliente(nome) values ("Rogerio");
INSERT INTO cliente(nome) values ("Fabio");
INSERT INTO cliente(nome) values ("Roberto");
INSERT INTO cliente(nome) values ("Adriano");
INSERT INTO cliente(nome) values ("Lucas");
INSERT INTO cliente(nome) values ("Ana");
INSERT INTO cliente(nome) values ("Ana Paula");