none
Confirmação de reenvio de formulário

    Pergunta

  • Olá,

     

    Tenho um formulário, onde estou fazendo cadastro no banco. 

    O que está acontecendo é o seguinte: eu faço o cadastro normal, mas se clicar em atualizar a pagina o navegador mostra uma mensagem dizendo que  as informações serão reenviadas caso fosse confirmado a atualização da página.

    Qual seria a melhor maneira de eu tratar isso?

    Obrigado, 

    terça-feira, 3 de janeiro de 2012 19:29

Respostas

Todas as Respostas

  • isso é normal pois, ao clicar em atualizar você dispara novamente a ultima requisição feita ao servidor.

    um exemplo :

     

    em um formulario você insere o cpf de um cliente e clica em pesquisar. 

    Se caso antes de você clicar em pesquisar apertar F5 ou atualizar a pagina irá atualizar normalmente, pois a ultima requisição foi apenas o get da pagina, não foi disparado nenhum postback.

    Porém ao clicar em pesquisar e após atualizar, você estará fazendo novamente a ultima requisição, que seria o comando pesquisar.


    Robson Gmack Programador e Fan .net \o/
    terça-feira, 3 de janeiro de 2012 19:43
  • hum...

    Eu ainda não fiz a validação dos campos, por isso está rodando a ultima requisição normal, então eu vou ter que tratar isso com as validações dos campos mesmo?

     

    terça-feira, 3 de janeiro de 2012 20:21
  • Digo qual o objetivo da sua aplicação?
    Caso a resposta seja útil ou responda sua questão, colabore marcando-a como resposta ou como útil.
    quarta-feira, 4 de janeiro de 2012 11:55
  • Diogo,

    Infelizmente isso não tem jeito. Acontece que se você submeter um formulário e atualizar a página, o browser VAI SUBMETER o formulário novamente. É como se ele refizesse a sua última ação na página.

    Isso é muito perigoso porque pode duplicar os dados enviados. Então você terá um problema de duplicidade porque o usuário resolveu atualizar a página após ter enviado o formulário.

    Uma solução é APÓS submeter o formulário e gravar os dados, redirecione o usuário para outra página com uma mensagem final. Exemplo: Seus dados foram salvos com sucesso. Essa página o usuário poderá atualizar à vontade, mas não duplicará os dados, pq o código de gravação está na página anterior.

    Para ter mais certeza de que o usuário nunca irá duplicar os dados, no HEAD da sua página crie um JavaScript assim:
    <script language="JavaScript">
    history.forward();
    </script>  

    Isso vai impedir que o usuário retorne a página do formulário após tê-lo enviado, pois o JavaScript irá jogar ele para a ultima página acessada automaticamente.

    Abs,


    Rafael Santos
    E-mail: rsdsantos@gmail.com

    Pequeno Gafanhoto
    quarta-feira, 4 de janeiro de 2012 14:27
  • Robson,

    Eu estou fazendo um cadastro de imagens com datas, nomes e etc.. é um painel de controle.

     

    Rafa,

    Eu estou fazendo o cadastro de imagens, se por exemplo o usuário tiver 10 imagens, ficaria meio que inviável que em cada cadastro ele seja mandado para uma outra página. Eu tenho um combobox, onde vou selecionar a categoria da imagem. Tendo selecionado, vou cadastrando as imagens para aquela categoria que sempre vai ficar selecionada. 

     

    Alguma outra solução?

     

    Obrigado,

    quarta-feira, 4 de janeiro de 2012 17:25
  • Sim, Diogo. Então procure utilizar um controle chamado UpdatePanel. Coloque o seu combo e seu formulário de cadastro dentro do UpdatePanel.


    Aqui você tem uma aula completa de UpdatePanel: http://www.macoratti.net/07/07/ajax_upp.htm

     


    Rafael Santos
    E-mail: rsdsantos@gmail.com

    Pequeno Gafanhoto
    quarta-feira, 4 de janeiro de 2012 17:30