Quinta-feira, 10 de julho de 2008 às 10h30

Buscar CEP online com XAJAX

Faltam 3 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

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.

5 comentários

 Bruno Henri Garcia Viterbo
13/07/2008 02h40

Muito bom!

Cara parabéns achei muito interessante e útil!

 Soel Luiz Venci Filho
30/01/2009 15h18

Problema ao abrir URL

Olá, estive configurando esse arquivo mas na hora de abrir a URL estou com o seguinte erro.

PHP Warning: file_get_contents() [<a href='function.file-get-contents'>function.file-get-contents</a>]: URL file-access is disabled in the server configuration in /home/imoveisd/public_html/central/cep/funBuscarCep.php

Estive analizando e pelo jeito o erro ta que não consigo abrir o arquivo no servidor deles.

Poderia me ajudar

Obrigado

 Max Oliveira
11/04/2009 15h39

Parabens

Muito bom mesmo André!!

 rafael santos
31/07/2009 10h41

funcao Recursiva javascript

ola estou com um probema poderia me ajudar?
eu tenho uma tabela com auto-relacionamento em sql 2000, que nao tem como eu montar os pais e filhos desta tabela. por isso eu trago um json com todos os campos e gostaria de criar uma arvore para exibir os pais e filhos desta tabela, sei que eu preciso de uma funcao recursiva ja que os filhos do pai tambem podem ser pais. se puder me ajudar agradeço. pois nao achei nada na net pra solucionar esta questao. um abraço!

 Marjorie Fernanda Barroso Teixeira
22/08/2009 11h23

Não faz mais a busca

Havia instalado e o formulário funcionava perfeitamente, depois que coloquei login e senha na página parou de funcionar.
Não sei se pode ser isso, mas a única coisa que ficou diferente foi isto: <form id="form" name="form" method="POST" action="<?php echo $editFormAction; ?>">
Antes a action não havia o: <?php echo $editFormAction; ?> era somente action=""
Estou a alguns dias quebrando a cabeça pra tentar solucionar este problema, se puder me dar um luz...
Desde já agradeço.

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
André Luiz Fraga Rodrigues trabalha com programação para web desde 1999. É graduando em Sistemas de Informação pela UNIPAC - Universidade Presidente Antônio Carlos de Ipatinga MG, trabalha como analista desenvolvedor de sites e sistemas web com o Grupo Host-Up.com.
3G

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.