Jquery, Ajax, MVC e Banco de dados com EF e LINQ

26/02/2014

0

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.

[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

Pjava

Responder

Posts

27/02/2014

Pjava

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) {

                }
            });
        }
Responder

27/02/2014

Murilo Teixeira

Tenta dar uma olhada nessa linha:

 $("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?
Responder

27/02/2014

Pjava

[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.
Responder

27/02/2014

Pjava

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.
Responder

27/02/2014

Pjava

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>
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar