¿Es la única forma de pasar parámetros POST en HTML a través de un formulario?

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

  •  11-07-2019
  •  | 
  •  

Pregunta

En HTML, puede enviar datos de una página a otra utilizando una solicitud GET de varias maneras:

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

... o ...

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

Sin embargo, con una solicitud POST, solo he visto datos enviados a través de elementos de formulario como este:

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

Si solo tengo un parámetro que quiero enviar a otra página usando POST, ¿hay una manera más fácil que envolverlo en un formulario?

¿Fue útil?

Solución

Solo hay dos formas de PUBLICAR desde un navegador: un formulario o un Ajax solicitud.

Otros consejos

Utilizando solo HTML, un formulario es la única forma de generar una solicitud POST. Puede usar secuencias de comandos del lado del servidor / Javascript para generar solicitudes POST de otras maneras, pero no hay otras formas de hacerlo solo con HTML simple.

Como ya descubrió, hay exactamente dos formas de transmitir datos a través del protocolo http: GET o POST. También hay un tercer tipo de mensaje HTTP llamado HEAD, pero que en realidad solo se usa para obtener los metadatos alrededor de un recurso sin descargarlo y no se implementa ampliamente.

Obviamente, tanto <form> como foo.html?a=1&b=2 son fácilmente accesibles mediante el uso de una etiqueta <=>. También se puede acceder fácilmente a <=> agregando manualmente parámetros de consulta a la URL en forma de pares de nombre-valor (<=>).

La belleza y complejidad de <=>, sin embargo, es que los pares de nombre-valor se comunican desde el navegador al servidor web incluido dentro del encabezado de solicitud HTTP que no es tan fácilmente accesible. La única forma de lograr el <=> sin usar una etiqueta <=> es alterar manualmente el encabezado de solicitud HTTP y agregar los pares de nombre-valor en usted mismo.

También tenga en cuenta que un servidor HTTP no sabe intrínsecamente si una solicitud (<=> o <=>) provino de una ventana principal del navegador o de una llamada AJAX. De todos modos, el servidor web leerá la solicitud, descifrará si es una solicitud <=> o <=>, buscará pares de nombre-valor según corresponda y generará una respuesta.

Si desea obtener detalles adicionales sobre cómo formatear correctamente una solicitud de <=> puede ir a jmarshall.com/easy/http/ o quizás tcpipguide.com/free/t_HTTPRequestMessageFormat .htm . El recurso definitivo es siempre el W3C , pero a veces los RFC pueden ser terriblemente confuso para nosotros, simples mortales para leer.

En HTML solo es con un formulario.

Pero puedes hacerlo si juegas con tu servidor. Aquí hay un buen artículo que le muestra cómo manipular el Obtenga el cambio para publicar a través de PHP. Esto requerirá que juegues con fsockopen ... De esta manera, usarás tu parámetro? Id = 1 & Amp; param = 2 ... y crearás una solicitud POST en el lado del servidor. Puede hacerlo genérico, una vez que se configura funcionará, pero es un poco difícil configurar todo primero.

Por supuesto, siempre puede hacer un GET a una página que contiene la lógica del lado del servidor (o AJAX) que creará una solicitud POST (por ejemplo, GET /pageWhichCreatesAPost.py). Muy desordenado, por supuesto, pero puede haber casos en los que tal solución podría ser útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top