….
Busca de endereços por cep com Ajax
Busca por cep c/ Ajax utilizando o webservice da republicavirtual
Estamos sempre procurando por soluções cada vez mais simples e rápidas, a consulta por cep é um exemplo disso, é comum visitarmos sites que tenham pequenos serviços como previsão do tempo, índices da bolsa de valores, cotação das principais moedas, etc … de toda forma são serviços que faz com que os visitantes voltem á página mesmo que exporadicamente, a consulta por cep pode ser encontrada em diversos sites pessoais ou comerciais, em alguns a busca parece complicada ou deve-se navegar por diversas áreas do site para se obter o resultado da consulta, neste exemplo vamos ver uma maneira simples (como tudo por aqui) de consultar um endereço por cep.
O resultado é uma página muito leve com resposta rápida. Veja em Exemplo Cep
Espero ter ajudado de alguma forma, até a próxima….
Rafael Clares
Parabéns pela script cara. É algo que sempre usamos.
Muito legal,,,simples e transparente …parabéns
Olá, no Firefox seu código não funcionou.
Abraços
Obrigado pelo comentário Eliseu, o código foi reparado, faltava ID do botão enviar no HTML e estava sendo referênciado no JS. Corrigido e atualizado tbm para download. Funciona no IE e FF. grato,
Cara parabens, esta bem pratico msm
Abs
Nao funcionou comigo…
to querendo pegar só a string, mas nao funciona
$resultado = @file_get_contents(‘http://republicavirtual.com.br/web_cep.php?cep=’.urlencode($cep).’&formato=query_string’);
Maicon, você quer dizer que não funcionou o que você quer fazer, é isso? Porque o programa que foi disponibilizado para download funciona e tem mais de 10 mil downloads. Visite o site da republicavirtual.com existem outras formas de recuperar os dados. Abraços
Tem como buscar o cep através do endereçO?
Sim, mas não explico nesse Post, talvez em um outro futuramente.
DEU CERTO, OBRIGADA
Obrigado pelo feedback, é importante para mim saber que funcionou!
Até mais
Tô colocando o código no meu site e percebi que retorna endereço não encontrado quando coloco cep de cidade do interior de Goiás, por exemplo… uso outro script pra pegar endereço da republicavirtual e consta esses dados das cidades.. sabe pq não retorna no seu script?
Consegui fazer funcionar… o que fiz foi substituir o arquivo jquery.js pelo do site: http://rochacbruno.tumblr.com/post/216503708/busca-de-cep-com-ajax-e-jquery e colocar a função getEndereco dentro da mesmo página ao inves de colocar no arquivo cep.js (acho que isso não influencia, mas fiz assim).
Obrigado
maluko, sinistro esse script. vlw 😀
abraços
Obrigado!, parabéns pelo script.
valeu irmão… de grande valia sua dica.
To tentando colocar um botao submit no formulario e cadastrar os dados numa tabela.
Creio que por causa do “onsubmit=return false” ele nao ta granvando. Tem como colocar um botao submit e manter o botao consultar funcionando?
Dide, basta tirar o return false.
Você pode também deixa-lo por causa da função e submeter o form através do evento do botao, por ex.
cria um botao/ button com evento no onclick=”this.form.submit()”
Obrigado Rafael.
deu certo, to com o form funfando!
Pra vcs verem.. um script que foi postado a um tempão e até esta data ainda faz sucesso. Tentei vários scripts antes desse, para fazer funcionar com o WHMCS e nenhum rolava legal. Esse ai eu só tive que trocar o nome dos campos no arquivo CEP.JS pelos nomes do meu formulário e pronto.. funfou de prima. Valeu Rafael.
Faço de minhas palavras a mesma do Claudio, demorei 40 segundos para integrar teu script no WHMCS, muito bom parabéns.
Congratulations on your writing has been very instructive
thanks for your comments.
ai esse artigo eh mto bom
vlx, serviu bastante p mim
oi amigo,
perfeito seu eemplo,
eu tenho a base de dados dos ceps no meu servidor,
e gostaria de saber se voce tem o arquivo php que faz a busca nesse server do republica,
po se tiver vai salvar mesmo!!! hehe
abraco
Então cara, basta efetuar a busca no banco… Me envia o dump da base que eu escrevo o script. Flw
Cara, parabéns!
Passados quase três anos da publicação do script e o mesmo ainda funciona perfeitamente.
Obrigado e grande abraço!
Maravilha, comigo funcionou numa boa.
Script 100% Obrigado ae brother 🙂
Obrigado!
Parabéns pelo blog,
Abraço
Muito bom! 😀
Parabens!
Parabéns! Estou procurando um sistema desse que funcione há dois dias!!!!!
Show de bola.
Parabéns, muito bom!
Boa tarde Rafael,
estou com o seguinte problema: Criei um formulário e coloquei dentro dele este seu script. Quando clico no botão buscar CEP ele dispara o formulário. você havia comentado em um comentario em cima que deveria colocar return false no onsubmit(), e executar o submit através do botão com a função Onclick(). Mas eu preciso realizar a validação do formulário! Como eu poderia “validar o formulário, pesquisar o Cep e enviar o formulário”?
é bom postar o código pra gente ver!
Obrigado pela atenção, consegui solucionar o problema.
Solução: onsubmit(return false) “isto na tag
E criei um botão tipo: Button executando uma função de validação que quando tudo for validado é excutado a função submit() no formulário.
Show de bola, quando encontramos coisas que realmente funcionam, precisamos agradecer.
Valeu.
Valeu Danilo. Sucesso aê, abraços!
Rafael parceiro, parabéns pelo script. Muito bom e simples!
Me diz um coisa: Vi seus comentários nos questionamentos do Dide e Felipe, porém, não conseguir adaptar ao meu form.
Meu caso é igual ao do Felipe. Tenho um form de cadastro e quero gravar os dados da consulta do cep na tabela. Quando disparo a consulta cep, o formulário é disparado.
Mesmo depois de ver a dica não consegui o resultado.
Se puder me ajudar ficarei muito grato
Forte abraço
Claudio, pior que a solução é a mesma.
O que você pode fazer nesse caso é o seguinte:
– coloque o botao que deseja utilizar para gravar os dados
– retire de dentro da tag form o botao “consultar”
Se retirar de dentro da tag form o botao
button id=”btn” class=”btn” onclick=”return getEndereco()”>Consultar</button
dai nao vai dar post, só dará post se o botao estiver dentro do form entao seria algo assim
form id="foo"
button onclick="gravaBD()"
/form
button onclick="consultar()"
galera não li tudo acima, peço desculptas.
como minha demanda era com form de cadastro, fiz o seguinte:
removi o botão do clique e coloquei onblur no meu form, desta forma, quando saio do campo, opa, eis que surge os dados
valeu clares.
um abraço
Teria como fazer o processo inverso? ou seja, a partir do endereço retornar o cep?
valeuu
Marcelo, não tem, não com esse webservice!
Tem um cliente que tem uma pizzaria ao clicar digitar cep ele vai ver essas informações e juntamente vai ter uma banco de dados com um lista de lugares que ele faz entregas caso ao contrario irá para a seguinte mensagem o site da pizzaria não faz entrega nesta região, como faço isso ? se fazer entrega irá liberar para efetuar compras exemplo http://www.restauranteweb.com.br
Ricardo, esse é apenas um script para obter endereços, o que você busca é um sistema completo onde os CEPs são cadastrados pelo administrador!
Há também a API ceplivre (http://ceplivre.com.br). Com consultas ilimitadas e respostas em JSON, XML e CSV, é possível fazer consultas em uma base de dados que retorna não apenas dados básicos de endereço como também informações complementares como código IBGE, código DDD e latitude, longitude e altitude da cidade.
Ótimo post cara! 😉
Galerinha, para o codigo funcionar perfeitamente é preciso tirar o “http://cep.”, e funfa direitinho.
qualquer coisa estou ai forte abraço e parabens
Valeu Nildo, depois de quase 5 anos os caras mudaram a url, atualizei o script. Muito obrigado por reportar o problema. abs
Obrigado, Rafael pelo Script e Nildo pela atualização no endereço. Abraços!
Cara, seguinte. Eu tenho um formulário maior, no qual inseri o teu código no meio. O problema é que no Chrome (e imagino que nos outros não-IE) funcionou perfeitamente. O problema tá na tranqueira do IE 9. Alguma idéia?
Valew.
Verson, cara deve ser uma besteirinha de nada. Seu exemplo tá online ?
Testei aqui no IE9 e funcionou… confirma aê se nesse link http://clareslab.com.br/cep/ funciona
esse mesmo. vou fazer tirar o verificador do cpf que coloquei e depois te posto um link.
Legal. MAs alguem teria como colocar algo assim no excel 2003.
Fabio
[email protected]
http://vernon.lacerda.nom.br/novapasta/trabalhe/principal.php?cpf=#inicio
Cara, agora analizando aqui eu vi que no meu form tem outros js, inclusive uma máscara sobre o CEP. Será que é esse o problema?
[]s
Testei no chrome e está funcionando, sempre que estiver trabalhando com jscripts tente utilizar o console de preferencia no chrome, se não tiver a extensão instale:
https://chrome.google.com/webstore/search/developer?hl=pt-BR
Assim poderá ver os erros que ocorrem no JS;
É, o problema não é no Chrome, é justamente no IE. Infelizmente preciso que esse formulário seja multi-plataforma, senão já teria feito só no Chrome. hehehe
É velho mas o problema é fácil de resolver, você precisa encontrar o erro que está sendo gerado, no seu caso, tem outros scripts envolvidos que podem estar interferindo.
Infelizmente o erro não é no script.
Eu testei seu site e o problema é o seguinte:
– Você tem um button dentro de um formulário para preencher o CEP mas o button dentro do form tem o propósito de submeter os dados.
O erro é esse, a solução é a seguinte:
– Troque o button por A href=”javascript:getEndereco()”
Pronto;
Bahhh, velho. Valeu mesmo. Caiu como uma luva. 😀
[]s
Gostaria de saber se a possibilidade de qdo digitar o cep ele auto-complementar sem precisar em clicar no botão consultar?
Obrigado
Coloque esse javascript no final do arquivo onde se encontra o formulário:
window.onload = function()
{
var ups = 0;
$(“#cep”).live(‘onkeyup’,function(){
ups++;
if(ups == 7){getEndereco()}
})
}
Rafael tudo bom?
Rafael muito bom esses scritps tá de parabéns, mas não é o que procurando rs, eu procuro um script de busca o cep mais proximo do meu um exemplo…
tenho 5 fornecedores cadastrado no meu banco, o visitante digita o cep dele e localiza a fornecedora mais proximo dele…
tem como vc fornecer um tutorial a respeito?
hehehe orra, aí sim hein!
Muito bom.
Se achar vê se compartilha conosco!
abs
Parabéns e muito obrigada por compartilhar!
olá, tem a possibilidade de além de buscar pelo cep, o script também levar em consideração a numeração da rua?
grato. E parabéns pelo script!!
Desculpe, não compreendi bem.
Se estiver falando da posição no mapa, ela ocorre em 2 etapas.
1 – quando você digita o cep, o mapa é posicionado na rua do cep.
2 – após digitar o campo número, o mapa se move novamente, se posicionando no número digitado.
Valeu cara. Foi falta de atenção minha, agora percebi que o script já faz a busca se movendo para o numero digitado…
Bem, estou tentando exibir mais que um mapa na tela (estou fazendo um site de anúncios) onde o endereço esta num banco de dados e quando for solicitado pelo usuário, o mesmo aparecerá por escrito seguido de um mapa de acordo com o endereço informado. no entanto aparece somente um mapa referente ao 1º endereço encontrado. enfim você acha que é possível exibir + de 1 mapa com esse script?
Sim, mas é preciso que cada mapa seja exibido em uma div com ID diferente, ex:
http://pastebin.com/1u0BcaKH
perfeito!
Ola Rafael, sou novo em php e gostei muito do seu script, realmente facil e funcional. Parabens pela iniciativa e por compartilhar conhecimentos.
Apenas gostaria de saber se também é possivel incluir o tipo de logradouro, ou seja, Av., Rua, Praça..etc.
Obrigado e mais uma vez, parabens.
Luiz
Luiz, no retorno da consulta há logradouro, basta implementar ok.
Veja
http://xtends.com.br/webservices/cep/json/08615-000/
e veja esse exemplo
http://clares.com.br/busca-cep-jquery-google-maps/
No arquivo cep.js altere a linha
$(‘#rua’).val(rs.logradouro);
para
$(‘#rua’).val(rs.tp_logradouro + ‘ ‘ + rs.logradouro);
que vai dar certinho.
abs
Obrigado Rafael, deu certinho.
OI Rafael,
Achei muito bom seu script. Parabéns.
Eu coloquei esse script no meu cadastro de clientes.
Eu gravo os dados e retorna tudo beleza.
O problema que para aparecer o mapa é preciso digitar
o cep ou atualizar o campo. Tem como ao trazer os dados
atualizar o mapa sem ter que digitar o cep, pois o cep
já está no campo cep.
Preciso pegar o cep que trouxe do banco ($cep) e mostrar o mapa.
Roseno, creio que seja o caso de você criar um evento no onload (no fim do seu html);
Ex:
window.onload = function(){ busca(); }
abs
Esse foi o exemplo mais bem feito que já vi, mas infelizmente, o script não funciona mais
Estava em manutenção, está online novamente!
http://xtends.com.br/webservices/cep/json/08615-000/
Excelente script, infelizmente não funciona com o jquery mais recente pois tem duas funções que foram removidas a partir da versão 1.9 do jquery: $.browser e .live()
Seria interessante converter as funções que foram removidas para que o script rode na última versão do jquery.
Um abraço!
olá Rafale, parabéns pelo script, no meu caso não funcionou no IE, tem alguma ideia? abraço.
Jario, teste no IE 11 e funcionou normalmente. Talvez seja algo em sua versão do IE. só testei no 11 agora.
abs
Rafael, eu acho que não está executando o css pois, a aparência fica normal (sem sobra e não preenche as informação nos campo), testei nos IE 11, IE 10 e nada… no chrome funciona perfeito…
Ola, Rafael,
Gostei muito do Script, realmente muito bom mesmo.
só que estou com um problema, testei alguns ceps e deu tudo ok, menos por esse CEP: 08143-420 e eu encontro ele em outros sistemas de outros sites, voce pode me ajudar a resolver essa questao?
Verdade Rafael, essa base é de 2013 e já existe a base atualizada de 2014.
Eu irei atualizar em breve, no momento ela só está disponível para venda.
ou melhor, se for possivel voce so adaptar a base desse script pra funcionar os Ceps, mais continuar com o seu mesmo, porque o seu tem Mask ( 08143-420 ) esse nao, fica tudo junto ( 08143420 ) e eu achei tao legal a ideia do mapa, me ajuda ae se for possivel :3
Rafael, isso que você chama de ajuda, eu chamo de trabalho.
Não sei em que área você atual mas existe uma grande diferença entre compartilhar conhecimentos e desenvolver de graça.
Talvez você consiga encontrar alguém com tempo para fazer para você os scripts mas essa pessoa não sou eu.
De toda forma, existem outras opções que você pode encontrar no google.
A base de dados sofre constantes atualizações e quando é atualizada é preciso pagar por ela, eu não posso ficar comprando sempre isso para manter o sistema das pessoas atualizadas, ainda
mais das que querem tudo pronto e mastigado.
Se tiver interesse na base atualizada, me informe, ela custa 150,00 e se você comprar poderá compartilhar com as pessoas assim como deseja que compartilhem com você!
Rafael, se voce teve problema em intender errado o que eu comentei, me desculpe, mais no tempo que estou aprendendo, desde o começo, encontrei pessoas como voce, otimas pessoas, otimos profissionais, mais muito ignorantes e sem compreensão, entao me desculpe, e realmente quando eu perguntei como conseguia a base, nao estava mandando voce comprar e compartilhar cmg, eu estou interresado em comprar e compartilhar, nao sou do tipo que acho que compro e fica so cmg, entao estou com interresse de comprar e compartilhar com quem for possivel, e referente ao adaptar o seu script ao outro ( que voce nao aprovou o comentario, “nao” sei porque ) eu nao precisei, conseguir usar so o script e exibir o mapa, agora se voce acha que tudo se trata de mastigar e pegar, Parabens, voce nao passa de um Hipocrita.
Meu caro, se você chegou no meu blog buscando no google a palavra “ignorante ou hipócrita” eu não sei.
Estou aqui para “tentar” ajudar a todos. Se você testou a base de dados é porque eu disponibilizei, não só a estrutura como fiz um script que do fundo do meu coração, não fiz para mim e sinceramente,
nunca usei em nenhum projeto.
Estas coisas faço com intuito de compartilhar e de ajudar mas não posso resolver todos os problemas ou agradar à todos, infelizmente.
A base que você testou está desatualizada porque é a que eu tenho no momento.
Se deseja comprar uma base de dados, digite no google “Base de dados CEP Atualizada” ou algo do tipo.
O comentário anterior eu não aprovei porque eu não tenho tempo para aprovar 10 comentários por minuto.
As pessoas escrevem uma linha por comentário e eu tenho que ficar aprovando linha por linha.;
Se observar bem acima do campo de comentários (e ninguém observa) tem uma regrinha lá escrita em vermelho, no intuito de simplificar as coisas para todo mundo.
Então, comentários repetidos, com códigos, picados ou sem nexo, não são aprovados. Talvez você não tenha se enquadrado em nenhum deles mas como fez 2 comentários seguidos, eu aprovei o último apenas.
Se você acha que sou hipócrita só porque eu não consigo resolver “todo” o seu problema, bom cara, o que eu posso dizer? É sua opinião e não posso mudar isso.
Eu tento fazer o meu melhor mas dentro dos meus limites. Infelizmente não tenho condições para dedicar tanto tempo ao blog e escrever ferramentas tão úteis para disponibilizar para vocês.
Sabe quantos já usaram o sistema e disseram “estou usando, estou feliz, obrigado, etc…” ?
As pessoas começam o comentário assim: “Parabéns mas estou com problemas”.
Alguns muitos poucos começam os comentários com “Parabéns, funcionou” ou “Parabéns, tive que alterar algo e funcionou”.
É sempre um “primeiro vou agradecer ou elogiar e depois eu peço para ele resolver tudo que quero”.
Está vendo aquele botão de doações lá em cima? Não né? Pois é, ninguém nunca, jamais, nenhuma vez se quer, viu esse botão, é um enfeite que ocupa espaço no layout.
E daí você vem me chamar de hipócrita?
Tá legal cara, obrigado. Seu comentário me motiva muito;
De toda forma, de verdade, um abraço.
Esse post é do caralho. Além de ter sido de grande ajuda, e tenha certeza disso, não rolou nada pela metade, ou feito nas coxas. É só o que é, Rafael Clares.
Valeu!
Valeu, Erick!
Fico muito feliz que o script tenha realmente lhe sido útil.
Forte abraço
tenho uma aplicação que tem N endereços, gostaria que o cep buscasse dinamicamente para N
Parabéns Rafa, funfo aqui legal e bem simples de entender! Grato
Parabéns pelo script!
Uma dúvida, consigo rodar ele usando a última versão do jQuery?
Obrigado
Parabéns amigo! E obrigado por liberar o script, muito útil!! Deus abençoe
Muito legal, mas como faço p salvar no banco de dados as informações?
Sensacional.. como faço para fazer uma doação?
Davi, que bom que gostou!
Você pode clicar no botão “doação” acima do campo de busca (superior direita)
Obrigado
Rafael Clares, parabéns pelo seu script, é prefeito.
Quero compartilhar com você a mudança que fiz nele, aqui no trabalho preciso pegar o tipo de logradouro e separá-lo do endereço, fiz a seguinte inclusão e modificação no arquivo cep.js:
Onde era:
…
$(‘#rua’).val(rs.endereco);
…
Troquei por:
…
var logr = rs.endereco.split(” “);
$(‘#logr’).val(logr[0]);
$(‘#rua’).val(rs.endereco.replace(logr[0]+’ ‘, ”));
…
no campo tipo_logradouro da minha página de dados dos alunos eu coloque a id=”logr”.
Como são poucos tipos de logradouro que tem mais de 1 nome (ex. Rua de Ligação) eu não me importei muito em fazê-lo simples, pois assim pude gravar os campos separados, visto que a base de dados que temos que enviar para a nossa matriz precisa ser assim.
Mais uma vez muito obrigado!
Perfeito meu parceiro, é assim que funcionada, todos contribuindo!
Grande abraço