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

Erro no Console

Pessoal, na hora que clico no botão para trocar a frase aparecem esses erros no console:

Uncaught TypeError: Cannot read property 'length' of undefined at trocaFraseAleatoria (frase.js:9) at HTMLAnchorElement.fraseAleatoria (frase.js:4) at HTMLAnchorElement.dispatch (jquery.js:5110) at HTMLAnchorElement.elemData.handle (jquery.js:4918)

meu codigo está igualzinho o do exercicio...

14 respostas

Fala Augusto!

Pelo que li no erro e na aula temos o código:


function trocaFraseAleatoria(data) {
    var frase = $(".frase");
    var numeroAleatorio = Math.floor(Math.random() * data.length);

    frase.text(data[numeroAleatorio].texto);
}

Então o erro acredito estar dando em data.length, quando você chama a função você está passando algum parâmetro?

Coloque o código aqui ou em algum CodePen!

$("#botao-frase").click(fraseAleatoria);

function fraseAleatoria(){
    $.get("http://localhost:3000/frases", trocaFraseAleatoria());
}

function trocaFraseAleatoria(data){
    var frase = $(".frase");
    var numeroAleatorio = Math.floor(Math.random() * data.length);

    frase.text(data[numeroAleatorio].texto);
    atualizaTamanhoFrase();
    atualizaTempoInicial(data[numeroAleatorio].tempo);
}

esse é o código Luiz.

Fala Augusto,

Quando você acessa "http://localhost:3000/frases" ele apresenta o JSON?

Na verdade não, ele aparece um texto apenas escrito assim:

[{"_id":0,"texto":"Alura, Cursos online de tecnologia que reinventam sua carreira.","tempo":15},{"_id":1,"texto":"Debuggers não consertam erros, apenas os exibem em slow motion.","tempo":8},{"_id":2,"texto":"Caelum, Ensino e Inovação.","tempo":5},{"_id":3,"texto":"Existem duas tarefas difíceis na Ciência da Computação: invalidação de cache e nomear as coisas.","tempo":15},{"_id":4,"texto":"Ciência da computação é tão sobre computadores quanto astronomia é sobre telescópios.","tempo":15},{"_id":5,"texto":"Na minha máquina funciona.","tempo":5},{"_id":6,"texto":"Hardware é o que você chuta, software é o que você xinga.","tempo":12},{"_id":7,"texto":"Software em funcionamento mais que documentação abrangente.","tempo":10},{"_id":8,"texto":"Iterar é humano, recursão é divino.","tempo":7},{"_id":9,"texto":"Existem três jeitos de desenvolver software. O jeito certo, o jeito errado e o meu jeito, que é igual o jeito errado só que mais rápido.","tempo":20}]

deste jeito. Não aparece o JSON todo arrumado parecendo um array

Bom Luiz, baixei um plugin do chrome, o JSONView e ele ficou todo organizado igual o do video aula, porém o erro ainda continua...

Fala Augusto,

Esse texto aí é o JSON mesmo, mas em formato texto, a minha dúvida era se estava acessando, e está, então o erro é outro.

Coloca um breakpoint na linha var frase = $(".frase"); e vê o que o que tem na variável data, fiz um teste aqui e seguindo a aula trouxe os dados corretamente.

Apareceu isso Luiz:

[p.frase.center, prevObject: jQuery.fn.init(1)] 0 : p.frase.center length : 1 prevObject : [document] proto : Object(0)

Acho que não apareceu aqui todo o erro.

[p.frase.center, prevObject: jQuery.fn.init(1)]

apareceu essa linha. Daí eu abro ela e aparece isso:

0: p.frase.center length:1 prevObject:[document] _proto__:Object(0)

Beleza, essa é a frase né?

Mas o que vem no objeto DATA?

O erro está dando em var numeroAleatorio = Math.floor(Math.random() * data.length); provavelmente o data está vindo vazio.

Se estiver falando que é undefined está com algum problema no get

esse é o problema, o codigo ta igual...

O objeto DATA ta dando undefined...

solução!

Consegui Luiz. O erro estava aqui:

function fraseAleatoria(){
    $.get("http://localhost:3000/frases", trocaFraseAleatoria);
}

No exercicio pede pra colocar o ( ) depois do trocaFraseAleatoria, mas na verdade nao tem.. baixei o arquivo na proxima aula e estava sem o ( ).

Obrigado pela ajuda LUIZ

Opa!

Massa!

Abraços!