Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jordan Pinheiro_147113

php jquery consulta de cep

Recommended Posts

Olá, eu desenvolvi um webservice de consulta cep (base 2013 atualizada dos correios) e agora estou tentando fazer algumas implementações para ajudar os usuários, como jquery não é minha praia... vamos lá....


link para o fomulário de consulta

http://cep.osgestor.info/exemplo/

bom nele eu uso o .blur para ativar a function que faz o load

só que é preciso que a pessoa digite o cep e clique fora da caixa ou no próximo campo... eu quero modificar essa regra para após digitar o cep com 8 digitos ou coisa similar ele já ativar o gatilho..



 

<script type="text/javascript">
$(document).ready(function(){
$("#cep").blur(function(event){
event.preventDefault();
$("#caixa").show('slow');

var post = "cep=" + $("#cep").val();

$.post("consulta.php",post,function(resultado) {

var obj = jQuery.parseJSON(resultado);

$("#rua").val(obj.endereco);
$("#bairro").val(obj.bairro);
$("#cidade").val(obj.cidade);
$("#estado").val(obj.uf_s);

$("#bairroc").val(obj.id_bairro);
$("#cidadec").val(obj.id_cidade);
$("#estadoc").val(obj.uf_ibge);

});

})
});

</script>

bom conto com a ajuda de vocês...

 

o link para documentação do webservice é

 

http://cep.osgestor.info/doc.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Jordan,

 

Esse teu post veio em um ótimo momento, eu vi que você postou ontem sobre esse web service do cep e estava tentando usa-lo, mas realmente não consegui com jquery ( $.post, $.ajax ), ele devolve o que, um objeto, um array, uma pagina?

 

Utilizando $.ajax, não retorna nada, veja - http://img233.imageshack.us/img233/2888/retornojpg.png

 

Meu código jquery esta assim:

 

var url = "http://cep.osgestor.info/" + cep + ".json";

$.ajax({
     url: url,
     type:'GET',
     dataType: 'json',
     success: function(data){
          console.log( data );
	  var obj = jQuery.parseJSON(data);
	  console.log( obj );
      },
})

 

O XML retorna com erro também - http://img13.imageshack.us/img13/5712/xmlk.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou resolvendo o problema com o xml... mas o json retorna normal já... vc tentou usar da forma que mostrei acima, querendo posso te mandar um arquivo de exemplo



corrigido já o xml para http://cep.osgestor.info/13506079.xml



você pode criar o consulta.php assim

 

 

 

<?php


$cep = preg_replace("/[^0-9]/", "",$_POST['cep']);
$caminho = "http://cep.osgestor.info/".$cep.".json";


echo $caminho = file_get_contents($caminho);

retorno

 

 

 

<script type="text/javascript">
$(document).ready(function(){
    $("#cep").blur(function(event){
event.preventDefault();
        $("#caixa").show('slow');


         var post = "cep=" + $("#cep").val();


$.post("consulta.php",post,function(resultado) {


var obj = jQuery.parseJSON(resultado);


$("#rua").val(obj.endereco);
$("#bairro").val(obj.bairro);
$("#cidade").val(obj.cidade);
$("#estado").val(obj.uf_s);


$("#bairroc").val(obj.id_bairro);
$("#cidadec").val(obj.id_cidade);
$("#estadoc").val(obj.uf_ibge);


});
        
    })
});


</script>
</head>


<body>
<div id="carregando" style="display:none; color: green;">Carregando…</div>
Informe seu CEP <br />
<input type="text" name="cep" id="cep" />
<div style="border:#ccc 1px solid; padding:4px; background-color:#f8f8f8; display:none;" id="caixa">
Rua
<input type="text" name="rua" id="rua" />
<br />Bairro
<input type="text" name="bairroc" id="bairroc" /> - <input type="text" name="bairro" id="bairro" />
<br />Cidade
<input type="text" name="cidadec" id="cidadec" /> - <input type="text" name="cidade" id="cidade" />
<br />Estado
<input type="text" name="estadoc" id="estadoc" /> - <input type="text" name="estado" id="estado" />
</div>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal, tem um também bastante interessante que gostaria de compartilhar com vocês, a Aviso Brasil? API de busca de cep 100% gratuita rápida e consistente. Uma empresa com mais de 20 anos e que passou a disponibilizar esta API. Eu uso já a algum tempo e é uma api excelente, é um sistema que é atualizado constantemente pela base de cep's dos correios sem precisar "rackear" o site deles. Eu recomendo bastante.

 

Funciona assim, se você, utilizando qualquer linguagem de programação, acessar uma das urls:

 

http://cep.correiocontrol.com.br/cep.json'>http://cep.correiocontrol.com.br/cep.json

http://cep.correiocontrol.com.br/cep.js

 

 

Pronto, ela vai te retornar o cep buscado em "cep" no formato JSON ou JSONP

 

Exemplo funcionando APENAS COM HTML e JAVASCRIPT.

 

<!DOCTYPE html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
    function atualizacep(cep){
      cep = cep.replace(/\D/g,"")
      url="http://cep.correiocontrol.com.br/"+cep+".js"
      s=document.createElement('script')
      s.setAttribute('charset','utf-8')
      s.src=url
      document.querySelector('head').appendChild(s)
    }

    function correiocontrolcep(valor){
      if (valor.erro) {
        alert('Cep não encontrado');
        return;
      };
      document.getElementById('logradouro').value=valor.logradouro
      document.getElementById('bairro').value=valor.bairro
      document.getElementById('localidade').value=valor.localidade
      document.getElementById('uf').value=valor.uf
    }

    </script>
  </head>
  <body>
  <h1>Busca de cep do Correio Control</h1>
  <label>CEP</label>
  <input id="cep" onblur="atualizacep(this.value)" />
  <label>Logradouro</label>
  <input id="logradouro" />
  <label>Bairro</label>
  <input id="bairro" />
  <label>Cidade</label>
  <input id="localidade" />
  <label>UF</label>
  <input id="uf" />
  
  </body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voltando ao assunto original do tópico, com algumas regras você pode definir o resultado final. No caso de um CEP, as regras são simples e algumas a mais você mesmo pode definir. Veja só:

 

- 8 caracteres numérico e/ou 8 numéricos e um hífen;

- usufrui de um formato específico (xxxxx-xxx).

 

Quando você disse que jQuery não é sua praia, não estude "jQuery". Estude JavaScript. Sabendo o que é e como funciona, entender a jQuery se torna simples e "natural".

 

Ao caso de 8 caracteres, é fácil:

//onkeyup ou apenas keyup, é o evento realizado ao soltar uma tecla pressionada
$('#cep').keyup(function(){
    var cep = $(this).val();
    if(cep.length == 8) {
        /** seu código **/
    } 
});

Mas veja bem, caso o usuário digitar 99999-99, com o hífen, ou ou A9999999, com algum caracter não numérico, o evento será disparado. Gerando um erro. Nesse caso, você possui três alternativas, verificar a presença de um hífen, permitir apenas números ou inserir uma máscara no formato correto (xxxxx-xxx). A máscara é de longe o "easy way", isso graças as bibliotecas existentes na web. Mas como não quero forçar a usar uma nova biblioteca e não gosto de "dificultar" a vida do usuário e sim a do programador (a minha, diga-se de passagem). Irei da primeira alternativa (verificar a presença do hífen).

 

Todos sabemos que o hífen é o sexto "elemento" do cep. Se o hífen não estiver no sexto elemento, e nossa string possui 9 caracteres, o CEP não é válido. Logo, utilizarei duas uma simples ER para validar o cep:

$('#cep').keyup(function(){
    var cep = $(this).val();
    
    //Verifica se o cep possui 5 caracteres, pode ter um hífen e mais 3 caracteres.
    var cepRegEx = /\d{5}-?\d{3}/;
    
    if(cepRegEx.test(cep)) {
        /** seu código **/
    } 
});

Agora, fica a seu critério o que utilizar

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Voltando ao assunto original do tópico, com algumas regras você pode definir o resultado final. No caso de um CEP, as regras são simples e algumas a mais você mesmo pode definir. Veja só:

 

- 8 caracteres numérico e/ou 8 numéricos e um hífen;

- usufrui de um formato específico (xxxxx-xxx).

 

Quando você disse que jQuery não é sua praia, não estude "jQuery". Estude JavaScript. Sabendo o que é e como funciona, entender a jQuery se torna simples e "natural".

 

Ao caso de 8 caracteres, é fácil:

//onkeyup ou apenas keyup, é o evento realizado ao soltar uma tecla pressionada
$('#cep').keyup(function(){
    var cep = $(this).val();
    if(cep.length == 8) {
        /** seu código **/
    } 
});

Mas veja bem, caso o usuário digitar 99999-99, com o hífen, ou ou A9999999, com algum caracter não numérico, o evento será disparado. Gerando um erro. Nesse caso, você possui três alternativas, verificar a presença de um hífen, permitir apenas números ou inserir uma máscara no formato correto (xxxxx-xxx). A máscara é de longe o "easy way", isso graças as bibliotecas existentes na web. Mas como não quero forçar a usar uma nova biblioteca e não gosto de "dificultar" a vida do usuário e sim a do programador (a minha, diga-se de passagem). Irei da primeira alternativa (verificar a presença do hífen).

 

Todos sabemos que o hífen é o sexto "elemento" do cep. Se o hífen não estiver no sexto elemento, e nossa string possui 9 caracteres, o CEP não é válido. Logo, utilizarei duas uma simples ER para validar o cep:

$('#cep').keyup(function(){
    var cep = $(this).val();
    
    //Verifica se o cep possui 5 caracteres, pode ter um hífen e mais 3 caracteres.
    var cepRegEx = /\d{5}-?\d{3}/;
    
    if(cepRegEx.test(cep)) {
        /** seu código **/
    } 
});

Agora, fica a seu critério o que utilizar

obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conheci várias apis que pesquisa por CEP, mas alguem sabe alguma API que você passa o ESTADO, CIDADE E ENDEREÇO, e ele traz os CEP referente aquilo?

 

Tipo -> SP - Americana - Anto

 

Ai ele pesquisa todos os CEPS que tenha Anto no começo da string sabe

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.