Do PHP para o C Sharp
Estou tentando aprender a como fazer com Jquery e Ajax, a consulta por CEP, tipo, digito o CEP e ele já preenche a rua, cidade, bairro e uf. Acontece que a maioria dos sites eu pego os exemplos em PHP e na hora de passar alguma coisa do PHP para o C# eu me perco, tipo, no código ele faz menção de uma página PHP. Como eu faço ela se tornar C# ou Asp.Net? Abaixo o código em PHP:
<?php
$cep = $_POST['cep'];
$reg = simplexml_load_file("http://cep.republicavirtual.com.br/web_cep.php?formato=xml&cep=" . $cep);
$dados['sucesso'] = (string) $reg->resultado;
$dados['rua'] = (string) $reg->tipo_logradouro . ' ' . $reg->logradouro;
$dados['bairro'] = (string) $reg->bairro;
$dados['cidade'] = (string) $reg->cidade;
$dados['estado'] = (string) $reg->uf;
echo json_encode($dados);
?>
<?php
$cep = $_POST['cep'];
$reg = simplexml_load_file("http://cep.republicavirtual.com.br/web_cep.php?formato=xml&cep=" . $cep);
$dados['sucesso'] = (string) $reg->resultado;
$dados['rua'] = (string) $reg->tipo_logradouro . ' ' . $reg->logradouro;
$dados['bairro'] = (string) $reg->bairro;
$dados['cidade'] = (string) $reg->cidade;
$dados['estado'] = (string) $reg->uf;
echo json_encode($dados);
?>
Pjava
Curtidas 0
Respostas
Thiago Porto
30/07/2013
essa url retorna um xml, no próprio c# existe a possibilidade de ler xml dá uma pesquisada.
GOSTEI 0
Thiago Porto
30/07/2013
percebi uma coisa, ele pega uma url que retorna um xml, e joga os dados em uma variável e depois converte para json, é muita coisa, no próprio jquery com ajax você poderia pegar apenas a url e ler e jogar aonde quiser.
GOSTEI 0
Pjava
30/07/2013
Então é exatamente isso, mas não sei como substituir isso tudo no C#. Abaixo os códigos do html, jquery e ajax.
Veja que url do ajax ele chama a página. O que passo com C#?
<!DOCTYPE html> <html> <head> <title>Consulta de CEP - por rafaelWendel.com</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type='text/javascript' src='http://files.rafaelwendel.com/jquery.js'></script> <script type='text/javascript' src='cep.js'></script> </head> <body> <h1>Preenchimento automático com consulta de CEP - por <a href="http://www.rafaelwendel.com" title="Visite o blog www.rafaelwendel.com">rafaelWendel.com</a></h1> <form id="form1" class="form1" method="post"> <label>CEP (Somente números):</label><br /> <input type="text" name="cep" id="cep" maxlength="8" /> <br /><br /> <label>Rua:</label><br /> <input type="text" name="rua" id="rua" size="45" /> <br /><br /> <label>Número:</label><br /> <input type="text" name="numero" id="numero" size="5" /> <br /><br /> <label>Bairro:</label><br /> <input type="text" name="bairro" id="bairro" size="25" /> <br /><br /> <label>Cidade:</label><br /> <input type="text" name="cidade" id="cidade" size="25" /> <br /><br /> <label>Estado:</label><br /> <input type="text" name="estado" id="estado" size="2" /> <br /><br /> <input type="submit" value="Salvar Dados" /> </form> </body> </html>
Veja que url do ajax ele chama a página. O que passo com C#?
$(document).ready( function() { /* Executa a requisição quando o campo CEP perder o foco */ $('#cep').blur(function(){ /* Configura a requisição AJAX */ $.ajax({ url : 'consultar_cep.php', /* URL que será chamada */ type : 'POST', /* Tipo da requisição */ data: 'cep=' + $('#cep').val(), /* dado que será enviado via POST */ dataType: 'json', /* Tipo de transmissão */ success: function(data){ if(data.sucesso == 1){ $('#rua').val(data.rua); $('#bairro').val(data.bairro); $('#cidade').val(data.cidade); $('#estado').val(data.estado); $('#numero').focus(); } } }); return false; }) });
GOSTEI 0
Thiago Porto
30/07/2013
use essa http://correiosapi.apphb.com/ vai ajudar, entra no site e veja o exemplo
GOSTEI 0
Thiago Porto
30/07/2013
Fiz um exemplo bem simples
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Usando REST para recuperar CEP</title> <script src="jquery.js"></script> <script> $(document).ready(function(){ $("#carregando").hide(); $("#btnPesquisar").click(function(){ $.ajax({ url: 'http://correiosapi.apphb.com/cep/'+$("#txtValor").val(), dataType: 'jsonp', beforeSend: function(){ $("#carregando").show(); }, success: function(data){ $(data).each(function(){ $("#resultado").append("<h2>CEP: "+data.cep+"</h2>"+ "<h2>Tipo: "+data.tipoDeLogradouro+"</h2>"+ "<h2>Logradouro: "+data.logradouro+"</h2>"+ "<h2>Bairro: "+data.bairro+"</h2>"+ "<h2>Cidade: "+data.cidade+"</h2>"+ "<h2>UF: "+data.estado+"</h2>"); }) }, complete: function(){ $("#carregando").hide(); } }) }); }); </script> </head> <body> <fieldset> <legend>Informe o número do CEP(Somente números)</legend> <input type="text" id="txtValor"> <input type="button" id="btnPesquisar" value="Pesquisar"> </fieldset> <br> <div id="carregando"> <img src="ajax-loader.gif"> Carregando... </div> <div id="resultado"></div> </body> </html>
GOSTEI 0
Joel Rodrigues
30/07/2013
Opa. Eu publiquei recentemente um artigo sobre isso: [url]https://www.devmedia.com.br/consultando-endereco-por-cep-em-c/28061[/url]
GOSTEI 0
Thiago Porto
30/07/2013
Opa. Eu publiquei recentemente um artigo sobre isso: [url]https://www.devmedia.com.br/consultando-endereco-por-cep-em-c/28061[/url]
Perfeito!
GOSTEI 0
Pjava
30/07/2013
Ok, vou conferir os dois
GOSTEI 0
Pjava
30/07/2013
Thiago, não consegui fazer funcionar. O que devo fazer?
GOSTEI 0
Thiago Porto
30/07/2013
entra no meu github.com/tporto e pega os fontes
GOSTEI 0
Pjava
30/07/2013
Olá Joel, vi seu exemplo. O que passa que para mim é um teste e tem que ser feito com JQuery e Ajax.
GOSTEI 0
Pjava
30/07/2013
Thiago, esses são os erros que aparecem no debug do chrome
Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:15056/jquery.js
Uncaught ReferenceError: $ is not defined TesteGeral.aspx:14
Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:15056/ajax-loader.gif
[Wed Jul 31 2013 09:43:54] <ErrorType: ReferenceError, Message: tcmInjectBanner is not defined ,FuncName: pluginId: 108>
Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:15056/jquery.js
Uncaught ReferenceError: $ is not defined TesteGeral.aspx:14
Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:15056/ajax-loader.gif
[Wed Jul 31 2013 09:43:54] <ErrorType: ReferenceError, Message: tcmInjectBanner is not defined ,FuncName: pluginId: 108>
GOSTEI 0
Pjava
30/07/2013
O exemplo baixado funcionou. Vou comparar e ver o que está errado entre os dois
GOSTEI 0
Pjava
30/07/2013
Então, o que está passando é se eu coloco esse código em página aspx não funciona, mas se for uma html simples aí funciona. Porque não funciona em uma aspx?
GOSTEI 0
Thiago Porto
30/07/2013
pode ser problema de carregamento, manda seu código aspx
GOSTEI 0
Pjava
30/07/2013
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TesteGeral.aspx.cs" Inherits="TimeAjax.TesteGeral" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Usando REST para recuperar CEP</title> <script src="jquery.js"></script> <script type="text/javascript" src="~/Scripts/jquery-1.7.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#carregando").hide(); $("#btnPesquisar").click(function(){ $.ajax({ url: 'http://correiosapi.apphb.com/cep/'+$("#txtValor").val(), dataType: 'jsonp', beforeSend: function(){ $("#carregando").show(); }, success: function(data){ $(data).each(function(){ $("#resultado").append("<h2>CEP: "+data.cep+"</h2>"+ "<h2>Tipo: "+data.tipoDeLogradouro+"</h2>"+ "<h2>Logradouro: "+data.logradouro+"</h2>"+ "<h2>Bairro: "+data.bairro+"</h2>"+ "<h2>Cidade: "+data.cidade+"</h2>"+ "<h2>UF: "+data.estado+"</h2>"); }) }, complete: function(){ $("#carregando").hide(); }, error: function () { alert("CEP não encontrado!") } }) }); }); </script> </head> <body> <fieldset> <legend>Informe o número do CEP(Somente números)</legend> <input type="text" id="txtValor"> <input type="button" id="btnPesquisar" value="Pesquisar"> </fieldset> <br> <div id="carregando"> <img src="ajax-loader.gif"> Carregando... </div> <div id="resultado"></div> </body> </html>
GOSTEI 0
Thiago Porto
30/07/2013
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript" src="~/Scripts/jquery-1.7.1.min.js"></script> <script type="text/javascript"> $(document).ready(function () { $("#carregando").hide(); $("#btnPesquisar").click(function () { $.ajax({ url: 'http://correiosapi.apphb.com/cep/' + $("#txtValor").val(), dataType: 'jsonp', beforeSend: function () { $("#carregando").show(); }, success: function (data) { $(data).each(function () { $("#resultado").append("<h2>CEP: " + data.cep + "</h2>" + "<h2>Tipo: " + data.tipoDeLogradouro + "</h2>" + "<h2>Logradouro: " + data.logradouro + "</h2>" + "<h2>Bairro: " + data.bairro + "</h2>" + "<h2>Cidade: " + data.cidade + "</h2>" + "<h2>UF: " + data.estado + "</h2>"); }) }, complete: function () { $("#carregando").hide(); }, error: function () { alert("CEP não encontrado!") } }) }); }); </script> </head> <body> <form id="form1" runat="server"> <fieldset><legend>Informe o número do CEP(Somente números)</legend> <input type="text" id="txtValor"/> <input type="button" id="btnPesquisar" value="Pesquisar"/> </fieldset> <br/> <div id="carregando"> <img src="ajax-loader.gif"/> Carregando... </div> <div id="resultado"></div> </form> </body> </html>
você está colocando o jquery duas vezes
GOSTEI 0
Pjava
30/07/2013
De qualquer forma, não funcionou. Vou tentar outra oportunidade, consigo fazer, mas sem jquery e ajaxa. Esse meu código abaixo funciona. Mas gostaria de funcionar com jquery e ajax.
protected void btnCep_Click(object sender, EventArgs e)
{
string cep = txtcep.Text;
string url = "http://republicavirtual.com.br/web_cep.php?cep=" + cep + "&formato=json";
System.Net.WebRequest req = System.Net.WebRequest.Create(url);
System.Net.WebResponse resp = req.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
string ret = sr.ReadToEnd().Trim();
System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
Dictionary<string, string> result = json.Deserialize<Dictionary<string, string>>(ret);
if (result["resultado"] != "0")
{
estado.Text = result["uf"];
cidade.Text = result["cidade"];
bairro.Text = result["bairro"];
rua.Text = result["tipo_logradouro"] + " " + result["logradouro"];
}
ScriptManager.RegisterStartupScript(upEndereco, upEndereco.GetType(), Guid.NewGuid().ToString(), "$('.cep').mask('99999-999');", true);
}
protected void btnCep_Click(object sender, EventArgs e)
{
string cep = txtcep.Text;
string url = "http://republicavirtual.com.br/web_cep.php?cep=" + cep + "&formato=json";
System.Net.WebRequest req = System.Net.WebRequest.Create(url);
System.Net.WebResponse resp = req.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
string ret = sr.ReadToEnd().Trim();
System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
Dictionary<string, string> result = json.Deserialize<Dictionary<string, string>>(ret);
if (result["resultado"] != "0")
{
estado.Text = result["uf"];
cidade.Text = result["cidade"];
bairro.Text = result["bairro"];
rua.Text = result["tipo_logradouro"] + " " + result["logradouro"];
}
ScriptManager.RegisterStartupScript(upEndereco, upEndereco.GetType(), Guid.NewGuid().ToString(), "$('.cep').mask('99999-999');", true);
}
GOSTEI 0