Pergunta

É possível fazer uma tal resposta HTTP, que o navegador ignora-lo e continua a mostrar a página exibida anteriormente?

Eu quero dizer o seguinte cenário:

a) usuário clica algo

b) alguns post vai para o servidor (ou GET, mas vamos ficar com POST como mais interessante)

c) servidor decide que por algum motivo ele não quer enviar a resposta neste momento

d) servidor envia resposta especificamente concebida para o efeito

e) navegador não mostra a página de erro, não mostra a página vazia, não redirecionar em qualquer lugar, não recarrega - apenas continua a mostrar o que estava mostrando como se o usuário nunca apresentou a forma

PS Claro que pode ser enrolado com AJAX, mas eu perguntar se nu-ossos solução não-javascript é possível

Foi útil?

Solução

Tente retornar HTTP 204 sem conteúdo. Veja a descrição desse código de resposta em RFC 2616 (Hypertext Transfer Protocol - - HTTP / 1.1) onde diz:

Se o cliente é um agente de usuário, ele não deve mudar seu ponto de vista documento que o que causou o pedido a ser enviado. Esta resposta destina-se principalmente para permitir entrada para as acções a tomar lugar sem causar uma alteração do ativo agente de usuário documentar vista, embora qualquer metainformation novo ou actualizado deve ser aplicada ao documentar atualmente em vista ativa do agente do usuário.

Outras dicas

Este é um método normalmente chamado AJAX . Ela exige Javascript , e função XMLHttpRequest .

Edit: Notei seu 'PS' na parte inferior. A 204 resposta sugeriu em outra resposta parece que pode ser um válido non-Javascript solução.

Suponha que você fazer isso.

O que o usuário fazer? Envie o formulário novamente, é claro.

Várias vezes.

Em seguida, eles decidem seu site está quebrado, e licença.

Eu acho que você precisa de Javascript para fazer isso, você pode enviar o pedido e dependendo da resposta do servidor do Javascript pode fazer uma falsa retorno, evitando a atualização / recarregamento da página real.

Eu não sei sobre a resposta 204, mas talvez de que maneira você pode fazê-lo do lado do servidor.

Outra forma de fazê-lo (também Javascript) é fazer um falso retorno, logo após o pedido é enviado, e, dependendo da resposta do servidor (com o Ajax), você pode modificar a página real ou enviar o usuário para outra página.

No. O protocolo HTTP consiste de um ciclo de pedido-resposta. O servidor não pode decidir não responder (Pode, mas então ele está quebrando o protocolo e cometer um erro).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top