da2k / curso-javascript-ninja

Curso Javascript Ninja
http://blog.da2k.com.br/curso-javascript-ninja/
2.35k stars 2.94k forks source link

Challenge-32 #5603

Closed lefialho closed 5 years ago

lefialho commented 6 years ago

Escreva aqui sua dúvida

Olá @fdaciuk .

Vou precisar da sua ajuda novamente nesse desafio. Acrescentei um novo método addCar() para manipular os dados do ajax e acrescentar um novo carro na tabela. Segui o exemplo da aula-32 e cheguei no seguinte resultado.

No console, aparecem os dados dessa maneira.

Eu criei os campos no html com os datas pra receber os valores vindos do ajax e peguei eles no main.js, com o get(), como mostra a imagem acima, porém não estou conseguindo fazer com que esses valores criados no método POST apareçam na tabela do html. Primeiramente, tentei fazer algo parecido com o o challenge da api CEP para receber esses dados, porém não deu certo.

O link do pul request com o código está aqui

@fdaciuk

fdaciuk commented 6 years ago

Oi @lefialho! A ideia seria mais ou menos a mesma que foi usada na aplicação de CEP mesmo. Na verdade, tem alguns conceitos que já foram passados no curso, mas talvez, por falta de prática, você esteja esquecendo deles =)

Um deles é que funções podem receber argumentos! Dessa forma, você não precisa fazer tudo dentro de uma única função. Crie uma função para cada ação, separando as responsabilidades, e faça essas funções receberem argumentos para fazer as ações necessárias =)

Outro ponto importante: funções podem receber referências de outras funções via argumento, para serem executadas no futuro. Lembra do exemplo da calculadora, que vimos nas aulas 9 / 10?

Quando executamos chamadas assíncronas, e não sabemos o momento em que teremos os dados disponíveis, podemos usar essa prática de passar uma função via argumento para a função que vai fazer a chamada ajax e, após a chamada, quando o resultado estiver pronto, você executa essa função que foi passada via argumento para ter acesso aos dados do request =)

Mas faça as coisas com calma: primeiro tente continuar do jeito que você começou: tudo dentro de uma função mesmo! Primeiro faça funcionar. Assim que tiver acesso o resultado, você coloca esses dados no DOM.

Depois de tudo funcionando, ae você pode começar a refatorar pra deixar o código mais legível, ok? =)

Bom, tente fazer aí, e qualquer coisa avisa que eu vou te ajudando quando forem surgindo as dúvidas :D

lefialho commented 6 years ago

@fdaciuk sim cara, eu realmente tenho dificuldade por falta de prática, até pq antes de fazer esse curso eu não sabia nada de JS, na verdade eu nunca nem precisei de saber a fundo JS pras coisas do meu dia-a-dia, mas quero aprender pq podem surgir melhores oportunidades futuras.

Mas voltando ao exercício, eu entendo que precisa ser refatorado e melhorado. Exatamente, quero fazer funcionar tudo primeiro pra depois, pensar em melhorar o código e a legibilidade. Vou voltar a assistir alguns vídeos anteriores pra melhorar nesse quesito.

No mais eu acredito que fiz todos os testes possíveis pra fazer os dados aparecem no DOM, porém não sei por qual motivo não está pegando os dados do AJAX. Vc pode ver pela imagem no comentário acima, que pelo CONSOLE os dados já estão aparecendo, então não sei o que está faltando fazer. Tentei usar o mesmo esquema do API CEP, selecionando a TD no DOM e acrescentando o get().textContent, mas não pegou os dados...

Vou tentar mais uma vez e qualquer coisa faço outro pull-request com o código até onde eu cheguei pra vc me ajudar a encontrar o erro.

fdaciuk commented 6 years ago

Show! Se travar em alguma coisa, faça o seguinte: deixe a branch que você está trabalhando com o código todo atualizado necessário para rodar a aplicação completa. Assim, quando eu for testar aqui, eu consigo ver exatamente qual o problema você está tendo, ok? =)

lefialho commented 6 years ago

Show mano! pode deixar...

fdaciuk commented 6 years ago

E só pra deixar claro o que eu comentei antes: quando eu disse que era falta de prática por ter deixado algumas coisa para trás, não foi com o objetivo de desmerecer, porque esse processo é de fato NATURAL! Você vai aprendendo enquanto pratica!

Então não se preocupe! Esses problemas que você está tendo, e as dúvidas que estão surgindo são normais, ok?

O importante é praticar, e perguntar sempre que tiver dúvidas! Estou aqui pra te ajudar no que for necessário :D

lefialho commented 6 years ago

Opa claro cara eu entendo, agradeço a sua disposição em querer ajudar também. Quando eu terminar esse curso, vou procurar praticar em outras coisas, tentar criar alguns projetos pra treinar e guardar melhor as informações. Como eu não sabia nada de JS, é muita coisa pra guardar de uma vez só, por enquanto ta tudo muito confuso kkk!

fdaciuk commented 6 years ago

haha! Sem crise =) O importante é ir praticando, e tentando usar as coisas que foram visto nas aulas nesses pequenos projetos =)

Fazer e refazer a mesma coisa, sempre tentando melhorar um pouquinho já vai ajudar bastante o seu desenvolvimento :D

lefialho commented 5 years ago

@fdaciuk , após um tempo parado por conta de trampo, voltei aqui para resolvermos essa issue.

Conforme conversamos a última vez, eu consegui cadastrar um carro via ajax, porém, certamente não foi feito da maneira mais correta.

Se você abrir o projeto no console, vai reparar que ele cria os dados dentro do array, porém a cada vez que eu faço um refresh no navegador, aparece um novo objeto dentro desse array, sendo que o correto seria aparecer apenas um, assim como foi ensinado na aula 32. Outra coisa, é que não estou conseguindo fazer a com que a url da imagem apareça dentro do src da tag img utilizando o textContent do ajax. Repare que aparece um (unknown).

Gostaria que me ajudasse nessas questões.

Segue o link do pull request com o código, até aonde eu consegui chegar.

link

fdaciuk commented 5 years ago

Oi @lefialho! O seu código atualizado está na branch "master"? Se sim, eu baixei aqui e, ao cadastrar um carro, ele exibe corretamente a imagem.

Consegue me mostrar o passo a passo que você está fazendo para ver esse erro, e ver se o repositório está com o código atualizado? =)

fdaciuk commented 5 years ago

Oi @lefialho! Vou fechar a issue, mas se vc ainda tiver problemas, só avisar que a gente reabre, ok? =)