Usuário com melhor resposta
Problemas com simples Ajax no MVC 4 com JSON

Pergunta
-
Olá a todos!
Por favor, preciso de ajuda com um request de AJAX simples.
O que eu preciso é que ao clicar no botão Buscar, seja enviado ao meu Controller que irá buscar no banco e retornar o endereço.
A minha maior dificuldade está em como usar o Ajax para conversar assincronamente com o Controller.
Por favor, se possível gostaria de saber como faço usando puramente Ajax no jQuery, e tbm se temuma forma de fazer utilizando os Helpers do MVC.
Segue Abaixo meu código:
CepsController.cs
public class CepsController : Controller { private IEnderecoRepository repository; public CepsController(IEnderecoRepository _repository) { this.repository = _repository; } // // GET: /Ceps/ public ActionResult Index() { return View(); } public JsonResult(string cepDigitado) { var endereco = repository.Enderecos.AsQueryable(); if (!string.IsNullOrEmpty(Convert.ToString(cepDigitado))) { endereco = endereco.Where(e => e.Cep == cepDigitado); } return Json(endereco.Select(e => new { Endereco = e.EnderecoCompleto, IdBairro = e.IdBairro, IdCidade = e.IdCidade }), JsonRequestBehavior.AllowGet); } }
Index.cshtml
<h2>Index</h2> <label for="cep">Digite seu CEP:</label> <input type="button" id="btnGet" value="Buscar" /> @Html.TextBox("txtCep") <br /> @Html.TextBox("txtEndereco") <br /> @Html.TextBox("txtBairro") <br /> @Html.TextBox("Cidade") <script> $(document).ready(function() { $("#btnGet").click(function () { //AQUI NAO SEI COMO FAÇO }); }); </script>
Obrigado!
Respostas
-
Faça isso :
<script> $(document).ready(function() { $("#btnGet").click(function () { $.ajax({ type:"POST", url:"/Ceps/Cep", data:"{cepDigitado:12345-678}", dateType:"json", contentType:"application/json;charset=utf-8", beforeSend:function(){ alert("To indo"); }, success:function(data){ $(data).each(function(){ alert(this.Endereco); }); }, error:function(erro){ alert(erro.responseText); } }); }); }); </script>
Espero ter ajudado mude isso também :
public ActionResult Cep(string cepDigitado) { var endereco = repository.Enderecos.AsQueryable(); if (!string.IsNullOrEmpty(Convert.ToString(cepDigitado))) { endereco = endereco.Where(e => e.Cep == cepDigitado); } return Json(endereco.Select(e => new { Endereco = e.EnderecoCompleto, IdBairro = e.IdBairro, IdCidade = e.IdCidade }), JsonRequestBehavior.AllowGet); } }
Ou seja deixei no CEP e como ActionResult.
Espero ter ajudado
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br
- Editado Davi Murilo quarta-feira, 3 de abril de 2013 20:39
- Sugerido como Resposta Afonso Fernandes quinta-feira, 4 de abril de 2013 14:22
- Marcado como Resposta Leandrohpa quinta-feira, 4 de abril de 2013 14:27
Todas as Respostas
-
Faça isso :
<script> $(document).ready(function() { $("#btnGet").click(function () { $.ajax({ type:"POST", url:"/Ceps/Cep", data:"{cepDigitado:12345-678}", dateType:"json", contentType:"application/json;charset=utf-8", beforeSend:function(){ alert("To indo"); }, success:function(data){ $(data).each(function(){ alert(this.Endereco); }); }, error:function(erro){ alert(erro.responseText); } }); }); }); </script>
Espero ter ajudado mude isso também :
public ActionResult Cep(string cepDigitado) { var endereco = repository.Enderecos.AsQueryable(); if (!string.IsNullOrEmpty(Convert.ToString(cepDigitado))) { endereco = endereco.Where(e => e.Cep == cepDigitado); } return Json(endereco.Select(e => new { Endereco = e.EnderecoCompleto, IdBairro = e.IdBairro, IdCidade = e.IdCidade }), JsonRequestBehavior.AllowGet); } }
Ou seja deixei no CEP e como ActionResult.
Espero ter ajudado
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br
- Editado Davi Murilo quarta-feira, 3 de abril de 2013 20:39
- Sugerido como Resposta Afonso Fernandes quinta-feira, 4 de abril de 2013 14:22
- Marcado como Resposta Leandrohpa quinta-feira, 4 de abril de 2013 14:27
-
Faça isso :
<script> $(document).ready(function() { $("#btnGet").click(function () { $.ajax({ type:"POST", url:"/Ceps/Cep", data:"{cepDigitado:12345-678}", dateType:"json", contentType:"application/json;charset=utf-8", beforeSend:function(){ alert("To indo"); }, success:function(data){ $(data).each(function(){ alert(this.Endereco); }); }, error:function(erro){ alert(erro.responseText); } }); }); }); </script>
Espero ter ajudado mude isso também :
public ActionResult Cep(string cepDigitado) { var endereco = repository.Enderecos.AsQueryable(); if (!string.IsNullOrEmpty(Convert.ToString(cepDigitado))) { endereco = endereco.Where(e => e.Cep == cepDigitado); } return Json(endereco.Select(e => new { Endereco = e.EnderecoCompleto, IdBairro = e.IdBairro, IdCidade = e.IdCidade }), JsonRequestBehavior.AllowGet); } }
Ou seja deixei no CEP e como ActionResult.
Espero ter ajudado
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br
Olá Davi, Obrigado pela ajuda, resolveu meu problema.
Abraços!
“The mind that opens to a new idea never returns to its original size.”