Animation during ajax request

Asked

Viewed 177 times

1

Personal I have an ajax request, Only it is taking a little while, she only gives me the return when it is successful or not, but during the request I do not show the user how the procedure is. How do I make sure that while the request is being made, I show a little animation showing that the request is being processed? My test server: http://tiagotestes.esy.es PS: The images do not belong to me only used for testing purposes. Form:

    <div class="col-md-6" >
       <form id="formcontato">
          <br>
          <label> Nome:</label>
          <input type="text" id="nome" name="nome" class="form-control" placeholder="Nome" aria-describedby="basic-addon1">
          <p class="palerta" id="valida_nome"></p>
          <br>
          <label>Email: </label>
          <input type="text" id="email" name="email" class="form-control" placeholder="[email protected]" aria-describedby="basic-addon1">
          <p class="palerta" id="valida_email"></p>
          <br>
          <label>Telefone:</label>
          <input type="text" id="telefone" name="telefone" placeholder="00 0000-0000" class="form-control" aria-describedby="basic-addon1">
          <p class="palerta" id="valida_telefone"></p>
          <br />
          <label>Mensagem:</label>
          <textarea rows="6" class="form-control" placeholder="Deixe sua mensagem" name="mensagem" id="mensagem"></textarea>
          <p class="palerta" id="valida_mensagem"></p>
          <br>
          <div class="text-center">
             <input type="submit" class="button" value="Enviar"id="enviar"/>
          </div>
       </form>
       <div class="notificacao text-center" id="notificacao">
          <h2 id="titnotif">
          </h2>
          <p id="txtnotif"></p>
       </div>

    </div>

Request:

 $("#formcontato").submit(function(event){
        event.preventDefault();
         if (validar()){
           $.ajax({
               url: "https://formspree.io/[email protected]",
               method: "POST",
               data: $(this).serialize(),
               dataType: "json",
               success: function(){
                   $("#titnotif").html("Seu formulário foi enviado com sucesso!");
                   $("#txtnotif").html("Logo farei contato :)");
                   $("#notificacao").addClass("boa");
                   $("#notificacao").fadeIn("slow");
                   $("input").val("");
                   $("textarea").val("");
                setTimeout(function(){
                    $("#notificacao").fadeOut("slow");
                }, 5000);
               },
               error: function(){
                   $("#titnotif").html("Sua mensagem não foi enviada!");
                   $("#txtnotif").html("Por favor, tente contato pelo meu E-mail, ou telefone.");
                   $("#notificacao").addClass("ruim");
                   $("#notificacao").fadeIn("slow");
                setTimeout(function(){
                    $("#notificacao").fadeOut("slow");
                }, 5000);
               }
           });
        }
    });

1 answer

4


Before Success add a beforeSend, like this:

$("#formcontato").submit(function(event){
    event.preventDefault();
     if (validar()){
       $.ajax({
           url: "https://formspree.io/[email protected]",
           method: "POST",
           data: $(this).serialize(),
           dataType: "json",
           beforeSend: function(){
               #('#titnotif').html('<img src="imagemLoading">');
           },
           success: function(){
               $("#titnotif").html("Seu formulário foi enviado com sucesso!");
               $("#txtnotif").html("Logo farei contato :)");
               $("#notificacao").addClass("boa");
               $("#notificacao").fadeIn("slow");
               $("input").val("");
               $("textarea").val("");
            setTimeout(function(){
                $("#notificacao").fadeOut("slow");
            }, 5000);
           },
           error: function(){
               $("#titnotif").html("Sua mensagem não foi enviada!");
               $("#txtnotif").html("Por favor, tente contato pelo meu E-mail, ou telefone.");
               $("#notificacao").addClass("ruim");
               $("#notificacao").fadeIn("slow");
            setTimeout(function(){
                $("#notificacao").fadeOut("slow");
            }, 5000);
           }
       });
    }
});

You can trade Alert for anything, a load or whatever you prefer

Browser other questions tagged

You are not signed in. Login or sign up in order to post.