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

Quando exporto a lista de Pacientes do Ajax, só aparece o nome na tabela!

vou tentar ser mais específico, estou fazendo o transferência no Ajax da tabela suplementar dos pacientes, só que eu modifiquei diretamente no HTML algumas características, no lugar de Paciente eu coloquei Produto, info-nome ficou do mesmo jeito, já info-peso virou info-preco, info-Altura mudei para info-quantidade, info-gordura = info-markup, info-imc = info-revenda. Na hora de exportar a tabela é preenchida só com os nome dos paciente/produtos, já as outras informações ficam em branco. Não aparece nenhum erro no console!

https://github.com/Jacob-Brandao/Tabela-Produtos/tree/master/Tabela-produtos link github

5 respostas

Fala ai José, tudo bem? O problema está na função montaTr, veja a parte onde cria os td's:

produtoTr.appendChild(montaTd(produto.nome, "info-nome"));
produtoTr.appendChild(montaTd(produto.preco, "info-preco"));
produtoTr.appendChild(montaTd(produto.quantidade, "info-quantidade"));
produtoTr.appendChild(montaTd(produto.markup, "info-markup"));
produtoTr.appendChild(montaTd(produto.valorRevenda, "info-revenda"));

Você está tentando ler as seguintes propriedades do objeto produto: nome, preco, quantidade, markup e valorRevenda.

Fora o nome, as demais propriedades não existem.

Isso porque o objeto retornado pela API contém as seguintes informações:

nome: "Jéssica"
peso: 47
altura: 1.54
gordura: 17
imc: 19.82

Repare que não existe as propriedades preco, quantidade, markup e valorRevenda.

Sendo assim, o valor passado para o parâmetro dado da função montaTd vai ser undefined. E isso vai deixar as colunas da tabela vazias.

Espero ter ajudado.

Obrigado Matheus, eu já tinha identificado isso pois foi eu que modifiquei os arquivos direto no HTML pois queria subistituir "peso,Altura,Gordura,IMC" por "preco,quantidade,markup, revenda" porquer estou fazendo uma tabela de produtos, e fui implementando o código e tudo estava funcionando normal, até chegar nessa parte de importar a lista de pacientes do Ajax, como eles vem com as características peso,Altura,Gordura e IMC, essas não aparecem na tabela como você falou, tem alguma forma de pegar essa lista do Ajax modifica-lá e depois colocar na tabela sem alterar o código que já modifiquei?

solução!

Fala José, você pode usar o map do array para modificar os itens e depois chamar o forEach:

var produto = JSON.parse(resposta);
produto.map(produto => ({
    nome: produto.nome,
    preco: 1,
    quantidade: 2,
    markup: 2,
    valorRevenda: 2,
})).forEach(function(produto) {
    adcionaProdutoNaTabela(produto);
})

Veja que estou transformando os itens do produto para o formato que você precisa e depois chamando a função adcionaProdutoNaTabela.

O problema é que não tem de onde pegar essas informações, por isso, foi necessário deixar os valores fixos.

O ideal seria a API retornar esses dados para você.

Caso queira saber mais sobre o map ou forEach tenho vídeos no meu canal:

Espero ter ajudado.

Obrigado Matheus, solucionou perfeitamente!!! Foi minha primeira dúvida postada, e vocês responderam muito rápido!!! já ganhou um inscrito lá no canal!!!

Magina José, sempre que precisar não deixe de criar suas dúvidas.

Obrigado pela inscrição.

Abraços e bons estudos.