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

Dúvida no Ex. 1 da Aula 6 - Usando AJAX

Olá, fiz esse script:

<script type="text/javascript">
    function pagaAgora(id) {
        if(confirm("Deseja pagar conta?")){
        $.post("pagar", {'id' : id}, function() {
            alert("Conta Paga com sucesso");
        });
        } else {
            alert("Ok, nada feito")
        }
    }
    </script>

Tá tudo funcionando, porém a página não atualiza depois, como posso fazer pra a página atualizar depois da ação? Segue o código do controller:

@RequestMapping("/pagar")
    public void paga(Conta conta, HttpServletResponse response){
        ContaDAO dao = new ContaDAO();
        dao.paga(conta.getId());
        response.setStatus(200);
    }
2 respostas
solução!

Oi Avana,

Na verdade quando usamos AJAX o navegador não dá o refresh na página.

Repare no seu Controller que você atualiza a conta no banco de dados, e no final envia o código 200 para o navegador. Ao receber a resposta, o navegador apenas chama a sua function javascript que está mostrando o alert("Conta Paga com sucesso!").

Caso você queira atualizar alguma coisa na página, deve fazer essa atualização via javascript. Algo como:

<script type="text/javascript">
    function pagaAgora(id) {
        if(confirm("Deseja pagar conta?")) {
            $.post("pagar", {'id' : id}, function() {
                alert("Conta Paga com sucesso");

                //aqui voce pode atualiza alguma coisa na pagina:
                var tdLinkPagar = document.querySelector("#conta_"+id);
                tdLinkPagar.innerHTML("Paga!");
            });
        } else {
            alert("Ok, nada feito")
        }
    }
</script>

Abraços!

Oi Rodrigo, entendi agora. Obrigada :)