/**
* @author Eric Rodrigo de Freitas
*/
//-> INICIA AJAX
function iniciaAjax(){
if(window.ActiveXObject) var ajax = new ActiveXObject('Microsoft.XMLHTTP');
else var ajax = new XMLHttpRequest();
return ajax;
}
// Abrir Tela Carregando
function carregando_cep(div,msg){
document.getElementById(div).innerHTML = msg;
}
// Busca do CEP (Requisição AJAX) -
function buscar_cep(cep){
ajax = iniciaAjax();
ajax.onreadystatechange = popula_cep;
ajax.open('GET','xml_cep.php?cep='+cep);
ajax.send(null);
}
// Popula os Campos do Formulário
function popula_cep(){
carregando_cep('cep','Carregando');
if (ajax.readyState == 4) {
if (ajax.status == 200) {
var xml = ajax.responseXML; // - recebe XML
if (xml != null) { // - verifica se XML não está vazio
var nofilho = xml.hasChildNodes;
if (nofilho) { // - verifica se tem nos filhos
var nos = xml.getElementsByTagName('cep');
for (i = 0; i < nos.length; i++) {
if (window.ActiveXObject) {
var cor_msg = nos[i].childNodes[0].firstChild.nodeValue;
var msg = nos[i].childNodes[1].firstChild.nodeValue;
var cidade = nos[i].childNodes[2].firstChild.nodeValue;
var uf = nos[i].childNodes[3].firstChild.nodeValue;
var tipo = nos[i].childNodes[4].firstChild.nodeValue;
var logradouro = nos[i].childNodes[5].firstChild.nodeValue;
var bairro = nos[i].childNodes[6].firstChild.nodeValue;
}
else {
var cor_msg = nos[i].childNodes[1].firstChild.nodeValue;
var msg = nos[i].childNodes[3].firstChild.nodeValue;
var cidade = nos[i].childNodes[5].firstChild.nodeValue;
var uf = nos[i].childNodes[7].firstChild.nodeValue;
var tipo = nos[i].childNodes[9].firstChild.nodeValue;
var logradouro = nos[i].childNodes[11].firstChild.nodeValue;
var bairro = nos[i].childNodes[13].firstChild.nodeValue;
}
}
var mensagem = '<font color="'+cor_msg+'">'+msg+'</font><br>';
mensagem+= tipo+': '+logradouro+'<br>';
mensagem+= 'Bairro: '+bairro+'<br>';
mensagem+= 'Cidade: '+cidade+' - UF:'+uf+'<br>';
}
}
}else var mensagem = 'erro na conexão com o servidor \\n'+ajax.statusText;
}
carregando_cep('cep',mensagem);
}
xml_cep.php
<?php
/*
* Função de busca de Endereço pelo CEP
* - Desenvolvido Felipe Olivaes para ajaxbox.com.br
* - Utilizando WebService de CEP da republicavirtual.com.br
* - Alterado por Eric Rodrigo de Freitas em 22/11/2007
*/
class busca_cep{
function busca_cep($cep){
$resultado = @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($cep).'&formato=query_string');
if(!$resultado){
$resultado = "&resultado=0&resultado_txt=erro+ao+buscar+cep";
}
parse_str($resultado, $_retorno);
/*
* - Cria XMl
*/
header("Content-Type: application/xml");
$_xml = '<?xml version="1.0" encoding="ISO-8859-1" ?>'."\r\n";
$_xml.= "\t"."<cep>\r\n";
switch($_retorno['resultado']){
case '2':
$_xml_.="\t\t".'<cor_msg>green</cor_msg>'."\r\n"; //-> Define Cor da mensagem
$_xml.= "\t\t".'<msg>Cidade com logradouro único</msg>'."\r\n";
$_xml.= "\t\t".'<cidade>'.$_retorno['cidade'].'</cidade>'."\r\n";
$_xml.= "\t\t".'<uf>'.$_retorno['uf'].'</uf>'."\r\n";
break;
case '1':
$_xml.= "\t\t".'<cor_msg>green</cor_msg>'."\r\n"; //-> Define Cor da mensagem
$_xml.= "\t\t".'<msg>Cidade com logradouro completo</msg>'."\r\n";
$_xml.= "\t\t".'<cidade>'.$_retorno['cidade'].'</cidade>'."\r\n";
$_xml.= "\t\t".'<uf>'.$_retorno['uf'].'</uf>'."\r\n";
$_xml.= "\t\t".'<tipo_logradouro>'.$_retorno['tipo_logradouro'].'</tipo_logradouro>'."\r\n";
$_xml.= "\t\t".'<logradouro>'.$_retorno['logradouro'].'</logradouro>'."\r\n";
$_xml.= "\t\t".'<bairro>'.$_retorno['bairro'].'</bairro>'."\r\n";
break;
default:
$_xml_.="\t\t".'<cor_msg>red</cor_msg>'."\r\n"; //-> Define Cor da mensagem
$_xml.= "\t\t".'<msg>Falha ao buscar CEP!</msg>'."\r\n";
break;
}
$_xml.= "\t"."</cep>\r\n";
echo $_xml;
}
}
$_cep = new busca_cep($_GET['cep']);
?>
Pergunta
Eric Freitas
Criei uma função p/ pegar cep pode ajudar a muitos ae, mas preciso contornar esse erro no IE6, podem me ajudar?
-> acredito q o erro esteja aí no cep.html
-> tem q deixar como dhtml/xhtml esse cep.html?
obs: já tentei por onblur/onBlur/ONBLUR etc etc etc..
cep.html
cep.js xml_cep.phpLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.