É a única maneira de passar parâmetros POST em HTML através de um formulário?

StackOverflow https://stackoverflow.com/questions/325929

  •  11-07-2019
  •  | 
  •  

Pergunta

Em HTML, você pode enviar dados de uma página para outra usando uma solicitação GET em um par de formas:

http://www.example.com/somepage.php?data=1

... ou ...

<form action="somepage.php" method="get">
  <input type="hidden" name="data" value="1" />
  <input type="submit" value="Submit">
</form>

Com um pedido POST, porém, eu só vi dados enviados através de elementos de formulário como este:

<form action="somepage.php" method="post">
  <input type="hidden" name="data" value="1" />
  <input type="submit" value="Submit">
</form>

Se eu só tenho um parâmetro que eu quero para enviar para outra página usando POST, existe uma maneira mais fácil do que envolvê-lo em um formulário?

Foi útil?

Solução

Existem apenas duas maneiras de POST a partir de um navegador - uma forma, ou um Ajax pedido.

Outras dicas

Usando apenas HTML, uma forma é a única maneira de gerar uma solicitação POST. Você pode usar o servidor scripting lateral / Javascript para gerar solicitações POST de outras maneiras, mas há outras maneiras de fazer com apenas HTML simples.

Como você já descobriu, há exatamente duas maneiras de dados de transmissão sobre o protocolo http: GET ou POST. Há também um terceiro tipo de HTTP mensagem chamada HEAD, mas isso é realmente apenas utilizado para obter os dados de meta em torno de um recurso sem baixá-lo e não é amplamente aplicada.

Obviamente ambos GET e POST são facilmente acessíveis através do uso de uma marca <form>. O GET também é facilmente acessível ao adicionar manualmente parâmetros de consulta ao URL na forma de pares nome-valor (foo.html?a=1&b=2).

A beleza ea complexidade do POST, no entanto, é que os pares nome-valor são comunicadas a partir do navegador para o servidor web fechado dentro do cabeçalho de solicitação HTTP que não é tão facilmente acessível. A única maneira de realizar a POST sem usar um tag <form> é alterar manualmente o cabeçalho de solicitação HTTP e adicionar os pares nome-valor em si mesmo.

Além disso, mantenha em mente que um servidor HTTP não intrinsecamente saber se um pedido (GET ou POST) veio de uma janela do navegador principal ou uma chamada de AJAX. Independentemente disso, o servidor web vai ler o pedido, vai decifrar se é um GET ou POST pedido, olhar para os pares nome-valor, conforme apropriado, e gerar uma resposta.

Se você quiser mais detalhes sobre como formatar corretamente um pedido POST você pode ir para jmarshall .com / fácil / http / ou talvez tcpipguide.com/free/t_HTTPRequestMessageFormat.htm . O recurso definitivo é sempre o W3C , mas às vezes as RFCs pode ser terrivelmente confuso para nós, meros mortais para ler.

Em HTML só que é com um formulário.

Mas você pode fazê-lo se você jogar com o lado do servidor. Aqui está um bom artigo que mostra como manipular o Get alterá-lo para Pós via PHP. Isso vai exigir que você jogue com fsockopen ... Esta maneira de fazê-lo irá utilizar o seu parâmetro? Id = 1 & param = 2 ... e vai criar uma solicitação POST no lado do servidor. Você pode torná-lo genérico, uma vez que setups ele irá obras, mas é um pouco de trabalho para configurar tudo em primeiro lugar.

Pode, claro, sempre fazer um GET para uma página que contém a lógica do lado do servidor (AJAX ou), que irá criar uma solicitação de POST (por exemplo, GET /pageWhichCreatesAPost.py). Muito confuso, é claro, mas pode haver casos em que tal uma solução alternativa talvez pudesse ser útil.

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