2
respostas

Spinner sempre ativado

Chama as frases corretamente, mas o spinner está sempre ativo. Também não exibe mensagem de erro. Segue o código.

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

function fraseAleatoria(){

    $("#spinner").toggle();

    //GET POST...
    $.get("http://localhost:3000/frases", trocaFraseAleatoria)
    .fail(function(){
        $("#erro").show();
        setTimeout(function(){
            $("#erro").toggle();
        },2000);
    })
    .always(function(){
        $("#spinner").toggle();
    }); 
}

function trocaFraseAleatoria(data){
    var frase = $(".frase");
    var nAleatorio = Math.floor(Math.random()*data.length);//o valor maxim = tamanho do array recebido
    frase.text(data[nAleatorio].texto);
    atualizaTamanhoFrase();
    atualizaTempoInicial(data[nAleatorio].tempo);
}

function buscaFrase(){
    $("#spinner").toggle();
    var fraseId = $("#frase-id").val();
    var dados = { id: fraseId };
    $.get("http://localhost:3000/frases", dados, trocaFrase)//fazer ajax para servidor
    .fail(function(){
        $("#erro").toggle();
        setTimeout(function(){
            $("#erro").toggle();

        }, 2000);
    })
    .always(function(){
        $("#spinner").toggle();
    });
}

function trocaFrase(data){
    var frase = $(".frase");
    frase.text(data.texto);
    atualizaTamanhoFrase();
    atualizaTempoInicial(data.tempo);
}
2 respostas
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Alura Typer</title>
    <link rel="stylesheet" href="css/libs/materialize.min.css">
    <link rel="stylesheet" href="css/libs/google-fonts.css">
    <link rel="stylesheet" href="css/estilos.css">
</head>
<body>
    <div class="container">
        <h1 class="center">Alura Typer</h1>
        <p class="frase center">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>

        <div class="center">
            <img src="img/spinner.gif" alt="Loading" id="spinner">
            <p class="erro">Ocorreu um erro, por favor, tente novamente.</p>
        </div>

        <ul class="informacoes center">
            <li>
                <i class="small material-icons icones">description</i>
                <span id="tamanho-frase">5</span> palavras
            </li>
            <li>
                <i class="small material-icons icones">query_builder</i>
                <span id="tempo-digitacao">10</span> segundos
            </li>
        </ul>

        <textarea class="campo-digitacao" rows="8" cols ="40"></textarea>

        <div class="botoes">
            <a id="botao-reiniciar" class="btn-floating btn-large waves-effect waves-light red">
                <i class="material-icons">restore</i>
            </a>
            <a id="botao-placar" class="btn-floating btn-large waves-effect waves-light green">
                <i class="material-icons">assessment</i>
            </a>
            <a id="botao-frase" class="btn-floating btn-large waves-effect waves-light blue">
                <i class="material-icons">shuffle</i>
            </a>
            <a id="botao-frase-id" class="btn-floating btn-large waves-effect waves-light cyan">
                <i class="material-icons">repeat_one</i>
            </a>
            <input type="number" id="frase-id" min="0">
        </div>

        <ul class="center">
            <li><span id="contador-caracteres">0</span> caracteres</li>
            <li><span id="contador-palavras">0</span> palavras</li>
        </ul>

        <section class="placar">
            <h3 class="center">Placar</h3>
            <table class="centered bordered">
                <thead>
                    <tr>
                        <th>Nome</th>
                        <th>No. de palavras</th>
                        <th>Remover</th>
                    </tr>
                </thead>
                <tbody>

                </tbody>
            </table>
        </section>
    </div>

    <script src="js/jquery.js"></script>
    <script src="js/main.js"></script>
    <script src="js/placar.js"></script>
    <script src="js/frase.js"></script>

</body>
</html>

Fala ai Tatiana, tudo bem? Apenas olhando os códigos é bem complicado resolver o problema.

Sendo assim, posso te pedir um favor? Compartilha o projeto completo comigo, assim eu consigo simular por aqui e analisá-lo com mais calma.

Pode compartilhar através do Github ou Google Drive (zipado).

Fico no aguardo.