Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

JavaScript + json

Ola, eu estou tentando recuperar uma listagem em json, pelo javaScript e incluir em uma tabela.

Meu json é assim:

{
    "list": [
        {
          "id": 4,
          "titulo": "titulo",
          "texto": "texto",
          "autor": {
            "id": 58,        
            "dataUltimoLogin": "2015-06-16T14:45:58-03:00",                
            "telefoneComercial": "(11) 1111-0000",
            "ramal": "1111",
            "loginUsuario": "usuario.teste"
          },
          "origem": {
            "id": 3,
            "nomeUnidade": "Sistemas",
            "sigla": "DIVSIS"
          },                   
        },
        {
          "id": 5,
          "titulo": "teste",
          "texto": "teste",
          "autor": {
            "id": 58,        
            "dataUltimoLogin": "2015-06-16T14:45:58-03:00",                
            "telefoneComercial": "(11) 1111-0000",
            "ramal": "1111",
            "loginUsuario": "usuario.teste"
          },
          "origem": {
            "id": 3,
            "nomeUnidade": "Sistemas",
            "sigla": "DIVSIS"
          }
        }
    ]
}

e essa é a função javaScript

        function listaNoticias() {
            var titulo = document.getElementById("titulo").value;
            var texto = document.getElementById("texto").value;

            $.ajax({url : '<c:url value="/feed/listaNoticiasAprovadas"/>',
                    data: {titulo : titulo, texto: texto},
                    datatype: 'json',
                    success: function (json){
                        $.each(json.list, function() {
                               var noticia = this;
                                   $("<tr>").appendTo('#listaNoticiaAprovada');                           
                                       $("<td>", { text: noticia.titulo}).appendTo('#listaNoticiaAprovada');                           
                                       $("<td>", { text: noticia.texto}).appendTo('#listaNoticiaAprovada');                           
                                       $("<td>", { text: noticia.autor.loginUsuario}).appendTo('#listaNoticiaAprovada');                                               
                            })
                    }                    
            });
        }

Porem eu não consigo pegar o valor que fica dentro de autor, o loginUsuario.

Alguém sabe como eu faço para acessar as propriedades do autor?

2 respostas
solução!

Oi Aline, fizemos um teste para buscar os dados (simulamos aqui) e o loginUsuario é trazido.

Porém, no seu código, há uma pequena mudança que precisa ser feita no que diz respeito a manipulação de DOM. Você faz assim:

$("<tr>").appendTo('#listaNoticiaAprovada');                           
$("<td>", { text: noticia.titulo}).appendTo('#listaNoticiaAprovada');                           
$("<td>", { text: noticia.texto}).appendTo('#listaNoticiaAprovada');                           
$("<td>", { text: noticia.autor.loginUsuario}).appendTo('#listaNoticiaAprovada');

Você cria uma nova tr, porém os td são adicionados como filhos de #listaNoticiaAprovada e não dentro da tr. Pelo o que eu inferi do seu código, você criar uma TR com três colunas para cada notícia, certo?

Se realmente for isso, você pode fazer:

var tr  = $("<tr>");                       
$("<td>", { text: noticia.titulo}).appendTo(tr);                           
$("<td>", { text: noticia.texto}).appendTo(tr);                           
$("<td>", { text: noticia.autor.loginUsuario}).appendTo(tr);
tr.appendTo('#listaNoticiaAprovada');

Pode ser que o HTML que você construía antes estivesse escondendo a informação do loginUsuario.

Aguardo seu feedback, tudo bem?

Abraço

Oi Flavio, funcionou sim.

Muito obrigada!