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
lsoares

estive a ler e reforço o que foi dito...

Os métodos HTTP: POST, GET e DELETE..... devem ser usados de acordo com as operações de negócio a que dizem respeito.. (Get para obter informação, Post para enviar informação).

Quanto ao tamanho do URL.... sim é algo que podes tentar simplificar... mas repara que estamos a falar na ordem dos 2 mil caracteres...

http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url

e isso é no IE.. porque nos outros é mais.

Ainda assim .... repito... isso não é desculpa para tentar "limpar" o URL...

desses 200 filtros devias enviar apenas aqueles que foram alterados...

Edited by lsoares

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.