Olá amigos. Gostaria de compartilhar com todos um assunto procurado por muitos e poucas vezes solucionado de uma forma eficiente. Como buscar ceps online, de forma fácil, com XAJAX.
O que você precisa?
- Conhecimentos básicos em PHP;
- Conhecimentos básicos na utilização do XAJAX;
- Um web service online de ceps: www.buscarcep.com.br.
Com um web service conhecido, basta saber como enviar o cep, e receber o retorno dos dados do mesmo. No nosso caso, utilizaremos o www.buscarcep.com.br onde podemos buscar o cep de duas formas:
- Query string;
- ou XML.
Neste primeiro momento iremos tratar a forma mais simples, por retorno de uma string, que será tratada por funções do PHP e então adicionado aos campos via XAJAX, sem que seja necessário recarregar nossa página. Vamos ao 1º arquivo:
<?php
// Função que busca o cep e retorna array
function busca_cep($cep){
$resultado = file_get_contents('http://www.buscarcep.com.br/?cep='.urlencode($cep).'&formato=string');
if(!$resultado){
$resultado = "&resultado=0&resultado_txt=erro+ao+buscar+cep";
echo "<script>\n alert(\"Web service de busca de CEP temporariamente indisponível!\"); \n</script>";
}
parse_str($resultado, $retorno);
return $retorno;
}
?>
Esta função acima faz algo bem simples. Ela recebe o parâmetro $cep e com ele faz uma leitura de um link (o qual obtivemos olhando a documentação do site www.buscarcep.com.br) utilizando a função file_get_contents() do PHP. Esta função, por sua vez, recebe os parâmetros em formato de texto, e os mesmos são atribuidos a variável $resultado. Em seguida utilizamos a funcão parse_str() do PHP para converter a string recebida em uma variável do tipo array e retornamos esse array.
2º arquivo:
<?php
require "./ajax/xajax_core/xajax.inc.php"; // XAJAX
require "./funBuscarCep.php"; // Função que faz a busca do cep
$ajax = new xajax();
$ajax->registerFunction("buscaCep");
##################################### BUSCA CEP #####################################
function buscaCep($cep, $endereco, $bairro, $cidade, $estado){
//Instancia o objeto XAJAX response
$objResponse = new xajaxResponse('ISO-8859-1');
if(empty($cep)){
return $objResponse;
}
$cep = str_replace("-", "", $cep);
$resultado_busca = busca_cep($cep); // Retorna um array
// Coloca os valores dos arrays nos campos do formulário
$objResponse->assign($endereco, "value", $resultado_busca['tipo_logradouro']." ".$resultado_busca['logradouro']);
$objResponse->assign($bairro, "value", $resultado_busca['bairro']);
$objResponse->assign($cidade, "value", $resultado_busca['cidade']);
$objResponse->assign($estado, "value", $resultado_busca['uf']);
// Retorna a resposta de XML gerada pelo objeto do xajaxResponse
return $objResponse;
}
// Manda o ajax processar os pedidos acima
$ajax->processRequest();
$ajax->printJavascript('./ajax/');
?>
Neste arquivo temos uma função em xajax chamada buscarCep(), a qual é responsável por receber do formulário o cep e os nomes dos campos de endereço, bairro, cidade e estado, para que, após o retorno da função que busca o cep no web service, os dados sejam atribuidos aos campos sem precisar recarregar a página. Simples assim!
Veja neste link esse código funcionando.
Clique aqui ou aqui e faça download dos scripts.
Grande abraço a todos.