Jquery, Ajax, MVC e Banco de dados com EF e LINQ
Como eu faço para trazer do banco de dados uma relação de nomes e montar um menu simples, mas usando Jquery com Ajax e mvc 4. Eis minha query que está retornando corretamente. A LINQ está trazendo os resultados corretamente. Só não estou conseguindo pegar na página com JQuery e Ajax.
Abaixo minha jquery que não funciona.
[HttpPost]
public JsonResult MontaMenuInstitucional()
{
AgaxturCmsEntities db = new AgaxturCmsEntities();
try
{
var resultado =
(from i in db.TB_INSTITUCIONAL
join c in db.TB_INSTITUCIONAL_CATEGORIAS on i.Id_Categoria equals(c.id)
where i.Ativo == 1 && c.Ativo == 1 && c.CdCliente == 1
select new
{
i.Id_Categoria
,i.Conteudo
,c.Categoria
}).ToList();
return Json(new { resultado }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { Result = ex.Message }, JsonRequestBehavior.AllowGet);
}
}Abaixo minha jquery que não funciona.
function MontaMenuInstitucional() {
$.ajax({
url: '/Home/MontaMenuInstitucional',
dataType: "json",
contentType: "application/json; charset=utf-8",
type: "POST",
success: function (data) {
alert('cheguei ao passo 0');
$(data.Result).each(function () {
alert('cheguei ao passo 1');
if (this.Id_Categoria > 0) {
alert('cheguei ao passo 2');
$("CategoriaInstitucional").append('<li><a href="#" title="' + this.Categoria + '" alt="" /></a></li>');
}
});
//processoSliderBanner();
},
error: function (error) {
}
});
}
Pjava
Curtidas 0
Respostas
Pjava
26/02/2014
Alterei o JQuer e coloquei dois alerts(Passo 0 e Passo 1). No passo 0 eu consigo chegar, mas não entra no passo 1. Abaixo meu código. Não estou conseguindo debugar isso no IE 9 ou 10, sei lá qual a versão, mas está bem diferente das versões anteriores( 8 ou menor).
function MontaMenuInstitucional() {
$.ajax({
url: '/Home/MontaMenuInstitucional',
dataType: "json",
contentType: "application/json; charset=utf-8",
type: "POST",
success: function (data) {
alert('Passo 0');
var resultSet = $.parseJSON(data.d);
$.each(resultSet, function (key, obj) {
alert('passo 1');
obj.Categoria;
});
},
error: function (error) {
}
});
}GOSTEI 0
Murilo Teixeira
26/02/2014
Tenta dar uma olhada nessa linha:
Você fecha a Tag <a> duas vezes, primeiro no /> depois no </a>
Você tentou algo mais simples, como simplesmente emitir um alerta com o valor que você quer mostrar pra ver se esta vindo certo?
um alert com o this.Categoria?
$("CategoriaInstitucional").append('<li><a href="#" title="' + this.Categoria + '" alt="" /></a></li>');Você fecha a Tag <a> duas vezes, primeiro no /> depois no </a>
Você tentou algo mais simples, como simplesmente emitir um alerta com o valor que você quer mostrar pra ver se esta vindo certo?
um alert com o this.Categoria?
GOSTEI 0
Pjava
26/02/2014
[img]http://arquivo.devmedia.com.br/forum/imagem/261848-20140227-095846.png[/img]
Esse erro só está acontecendo após eu ter alterado minha função jquery com ajax.
Esse erro só está acontecendo após eu ter alterado minha função jquery com ajax.
GOSTEI 0
Pjava
26/02/2014
Uma eu resolvi. A variável que retorna o json estava com nome errado no jquery. Era resultado e eu coloquei Result. Isso eu corrigi, agora não estou conseguindo é montar o Menu na página, dessa forma.
if (this.Id_Categoria > 0) {
$("CategoriaInstitucional").append('<li><a href="#" title="' + this.Categoria + '" alt="" /></li>');
}
Abaixo meu código asp.net da tag ul com sua tags li
<ul class="grid_4">
<li>Institucional</li>
@*<li><a href="#" title="">Nossa História</a></li>
<li><a href="#" title="">Linha do Tempo</a></li>
<li><a href="#" title="">Missão e Valores</a></li>
<li><a href="#" title="">Imprensa</a></li>
<li><a href="#" title="">Sustentabilidade</a></li>
<li><a href="#" title="">Trabalhe Conosco</a></li>*@
</ul>
Onde está comentado é que deveria vir do jquery para preencher.
if (this.Id_Categoria > 0) {
$("CategoriaInstitucional").append('<li><a href="#" title="' + this.Categoria + '" alt="" /></li>');
}
Abaixo meu código asp.net da tag ul com sua tags li
<ul class="grid_4">
<li>Institucional</li>
@*<li><a href="#" title="">Nossa História</a></li>
<li><a href="#" title="">Linha do Tempo</a></li>
<li><a href="#" title="">Missão e Valores</a></li>
<li><a href="#" title="">Imprensa</a></li>
<li><a href="#" title="">Sustentabilidade</a></li>
<li><a href="#" title="">Trabalhe Conosco</a></li>*@
</ul>
Onde está comentado é que deveria vir do jquery para preencher.
GOSTEI 0
Pjava
26/02/2014
Resolvido. Faltou eu dizer o que mostrar. Eu estva apenas carregando o Title e não mostrar na página. Assim ficou todo me código para quem desejar ou precisar.
function MontaMenuInstitucional() {
$.ajax({
url: '/Home/MontaMenuInstitucional',
dataType: "json",
contentType: "application/json; charset=utf-8",
type: "POST",
success: function (data) {
$(data.resultado).each(function () {
if (this.Id_Categoria > 0) {
$("#CategoriaInstitucional").append('<li><a href="#" title="' + this.Categoria + '" alt="" >' + this.Categoria + '</a></li>');
}
});
},
error: function (error) {
}
});
}<ul class="grid_4" id="CategoriaInstitucional">
<li>Institucional</li>
</ul>GOSTEI 0