Cep PHP + AJAX

  • Autor do post:
  • Categoria do post:PHP DEV

…. 

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

Download do exemplo

Espero ter ajudado de alguma forma, até a próxima….

Rafael Clares

Este post tem 99 comentários

  1. Michel

    Parabéns pela script cara. É algo que sempre usamos.

  2. Paulo Pacheco

    Muito legal,,,simples e transparente …parabéns

  3. Eliseusb

    Olá, no Firefox seu código não funcionou.
    Abraços

  4. Rafael Clares

    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,

  5. Jansle Paulo

    Cara parabens, esta bem pratico msm

    Abs

  6. Maicon

    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’);

  7. Rafael Clares

    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

  8. tresloukadu

    Tem como buscar o cep através do endereçO?

    1. Rafael Clares

      Sim, mas não explico nesse Post, talvez em um outro futuramente.

  9. Suely

    DEU CERTO, OBRIGADA

    1. Rafael Clares

      Obrigado pelo feedback, é importante para mim saber que funcionou!
      Até mais

  10. Cleiton Alves

    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?

  11. geovani

    maluko, sinistro esse script. vlw 😀
    abraços

  12. Claudio

    Obrigado!, parabéns pelo script.

  13. Dide

    valeu irmão… de grande valia sua dica.

  14. Dide

    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?

    1. Rafael Clares

      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()”

      1. Dide

        Obrigado Rafael.
        deu certo, to com o form funfando!

  15. Claudio Eden

    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.

  16. Diego Martins

    Faço de minhas palavras a mesma do Claudio, demorei 40 segundos para integrar teu script no WHMCS, muito bom parabéns.

  17. whmcs lisans

    Congratulations on your writing has been very instructive

  18. skiteninha

    ai esse artigo eh mto bom
    vlx, serviu bastante p mim

  19. rafael

    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

    1. Rafael Clares

      Então cara, basta efetuar a busca no banco… Me envia o dump da base que eu escrevo o script. Flw

  20. Rodrigo Monteiro

    Cara, parabéns!
    Passados quase três anos da publicação do script e o mesmo ainda funciona perfeitamente.

    Obrigado e grande abraço!

  21. Adonai Diofanes

    Maravilha, comigo funcionou numa boa.

  22. Pablo Ribeiro

    Script 100% Obrigado ae brother 🙂

  23. Igor

    Obrigado!
    Parabéns pelo blog,
    Abraço

  24. Nícolas

    Parabens!

  25. Thiago Ururay

    Parabéns! Estou procurando um sistema desse que funcione há dois dias!!!!!

  26. sNniffer

    Show de bola.

  27. Jean

    Parabéns, muito bom!

  28. Felipe

    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”?

    1. Rafael Clares

      é bom postar o código pra gente ver!

      1. Felipe

        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.

  29. danilodepolli depolli

    Show de bola, quando encontramos coisas que realmente funcionam, precisamos agradecer.
    Valeu.

    1. Rafael Clares

      Valeu Danilo. Sucesso aê, abraços!

  30. Cláudio

    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

  31. Rafael Clares

    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()"

  32. call

    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

  33. marcello

    Teria como fazer o processo inverso? ou seja, a partir do endereço retornar o cep?

    valeuu

    1. Rafael Clares

      Marcelo, não tem, não com esse webservice!

  34. Ricardo Akira Kobayachi

    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

    1. Rafael Clares

      Ricardo, esse é apenas um script para obter endereços, o que você busca é um sistema completo onde os CEPs são cadastrados pelo administrador!

  35. racquad

    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.

  36. Rafael

    Ótimo post cara! 😉

  37. Nildo Furtado

    Galerinha, para o codigo funcionar perfeitamente é preciso tirar o “http://cep.”, e funfa direitinho.

    qualquer coisa estou ai forte abraço e parabens

    1. Rafael Clares

      Valeu Nildo, depois de quase 5 anos os caras mudaram a url, atualizei o script. Muito obrigado por reportar o problema. abs

  38. márcio

    Obrigado, Rafael pelo Script e Nildo pela atualização no endereço. Abraços!

  39. Vernon Lacerda

    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.

    1. Rafael Clares

      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

      1. Vernon Lacerda

        esse mesmo. vou fazer tirar o verificador do cpf que coloquei e depois te posto um link.

  40. Fabio

    Legal. MAs alguem teria como colocar algo assim no excel 2003.
    Fabio
    [email protected]

  41. Vernon Lacerda

    É, 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

    1. Rafael Clares

      É 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;

      1. Vernon Lacerda

        Bahhh, velho. Valeu mesmo. Caiu como uma luva. 😀
        []s

  42. Cleber Manzano

    Gostaria de saber se a possibilidade de qdo digitar o cep ele auto-complementar sem precisar em clicar no botão consultar?
    Obrigado

    1. Rafael Clares

      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()}
      })
      }

  43. Ailson Varelo

    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?

    1. Rafael Clares

      hehehe orra, aí sim hein!
      Muito bom.
      Se achar vê se compartilha conosco!
      abs

  44. Patricia

    Parabéns e muito obrigada por compartilhar!

  45. Josiano Carvalho

    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!!

    1. Rafael Clares

      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.

  46. Josiano Carvalho

    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?

    1. Rafael Clares

      Sim, mas é preciso que cada mapa seja exibido em uma div com ID diferente, ex:
      http://pastebin.com/1u0BcaKH

  47. luiz

    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

      1. Luiz

        Obrigado Rafael, deu certinho.

  48. Roseno

    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.

    1. Rafael Clares

      Roseno, creio que seja o caso de você criar um evento no onload (no fim do seu html);
      Ex:
      window.onload = function(){ busca(); }

      abs

  49. erick

    Esse foi o exemplo mais bem feito que já vi, mas infelizmente, o script não funciona mais

  50. Adilson

    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!

  51. JarioSoft

    olá Rafale, parabéns pelo script, no meu caso não funcionou no IE, tem alguma ideia? abraço.

    1. Rafael Clares

      Jario, teste no IE 11 e funcionou normalmente. Talvez seja algo em sua versão do IE. só testei no 11 agora.
      abs

      1. JarioSoft

        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…

  52. Rafael Augusto

    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?

    1. Rafael Clares

      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.

  53. Rafael Augusto

    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

    1. Rafael Clares

      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ê!

      1. Rafael Augusto

        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.

        1. Rafael Clares

          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.

  54. Erick

    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!

    1. Rafael Clares

      Valeu, Erick!
      Fico muito feliz que o script tenha realmente lhe sido útil.
      Forte abraço

  55. vilanovavictor

    tenho uma aplicação que tem N endereços, gostaria que o cep buscasse dinamicamente para N

  56. DENNIS FARIAS

    Parabéns Rafa, funfo aqui legal e bem simples de entender! Grato

  57. Joel Metz

    Parabéns pelo script!
    Uma dúvida, consigo rodar ele usando a última versão do jQuery?

    Obrigado

  58. Fernando Damazio

    Parabéns amigo! E obrigado por liberar o script, muito útil!! Deus abençoe

  59. Gabriela Lima Bueno dos Santos

    Muito legal, mas como faço p salvar no banco de dados as informações?

  60. Davi Assumpção

    Sensacional.. como faço para fazer uma doação?

    1. Rafael Clares

      Davi, que bom que gostou!
      Você pode clicar no botão “doação” acima do campo de busca (superior direita)

      Obrigado

  61. Santelmo Cardozo

    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!

    1. Rafael Clares

      Perfeito meu parceiro, é assim que funcionada, todos contribuindo!
      Grande abraço

Os comentários estão encerrados.