Jump to content
NunoDinis

window.history.back()

Recommended Posts

NunoDinis

Boa tarde,

Quando utilizo o método window.history.back() para voltar atrás e o formulário ficar com a mesma pesquisa, pede-me submissão do formulário. O que devo fazer para contornar o problema ?

Obrigado.


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

Mas sabes porque pede nova admissão ?

Através de parâmetros na URL ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

E não há volta de contornar ? Li, e parece que funciona..

O objetivo é retroceder e ficar com a pesquisa que foi feita anteriormente. Ao carregar o index (que é onde efetuo a pesquisa), depois de carregar no botão voltar da outra página será que dá para submeter logo o formulário ? Penso que possa ser uma solução..


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

A outra forma de lidar com isso é redireccionando o utilizador no fim da página que recebe o POST executar.

Como assim ?

Se estás a fazer uma pesquisa, talvez fosse melhor usar GET.

Queria evitar usar GET, porque caso seja pesquisa-avançada são cerca de 200 filtros..


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
yoda

Assim que os dados do POST forem tratados, redireccionas o utilizador para que caso ele volte atrás não lide com o browser a pedir o reenvio dos dados.

Usar o GET é a melhor prática, aliás, como pretendes por exemplo partilhar uma pesquisa sem um url?

Os filtros podem ser bem pensados de forma a não tornar o url gigante.

Share this post


Link to post
Share on other sites
NunoDinis

Assim que os dados do POST forem tratados, redireccionas o utilizador para que caso ele volte atrás não lide com o browser a pedir o reenvio dos dados.

E como posso fazer isso ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

Então esse header vai ficar na 2ªpágina, junto do botão voltar ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

Pronto, já estive a ler a documentação, e de uma coisa já sei: o header tem que ser posto no index.php. Agora a minha questão é, como é que eu temos que proceder para não lidar com o browser a pedir nova submissão ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
yoda

Não, não é isso.

A função header() serve para enviar informações para o cabeçalho do documento, tais como content-types, charsets, redirects, ..

A ideia de usar o header com o redirect é para, mal o formulário seja processado, o utilizador ser redireccionado para uma página "nova" e assim ultrapassar o problema do history.back e reenvio dos dados do formulário. Como o pedido é redireccionado do lado do servidor, aquilo que o browser regista é o avanço da 1ª página para a 3ª, saltando a 2ª.

Isto é super simples de entender, eu é que posso não estar a explicar bem.

Posto isto, o header não tem de vir no index, tem de vir logo após o processamento do formulário. Como não deste código nenhum, não dá para fazer muito mais, mas há-de ser algo assim :

<?php
# processa a pesquisa
if ($_POST)
{

# .. e no final
header('Location: index.php');
}

Nota que o index.php é uma página, deves trocar pela página em que o utilizador vê os resultados da pesquisa que fez.

Mais uma vez, usa GET em vez de POST, ou vai dar mais trabalho.

Edited by yoda

Share this post


Link to post
Share on other sites
NunoDinis

Isto é super simples de entender, eu é que posso não estar a explicar bem.

Um bocado.. mas eu também estou a ser um bocadinho lento. Prefiro esmiuçar para ficar a perceber do que conseguir fazer e não perceber aquilo que fiz. E agradeço a tua disponibilidade.

Nota que o index.php é uma página, deves trocar pela página em que o utilizador vê os resultados da pesquisa que fez.

A minha pesquisa é processada e mostrada no index. Devo então processar a pesquisa no index e mostrar noutra página ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

Ok, vou fazer então.

Casos os filtros sejam muitos, qual a melhor solução para a URL não se tornar enorme ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

Segundo vou trabalhar nisso e posto aqui as minhas dúvidas :)


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.