Ответ 1
Существует только два способа отправки POST из браузера: форма или запрос Ajax.
В HTML вы можете отправлять данные с одной страницы на другую с помощью запроса GET несколькими способами:
http://www.example.com/somepage.php?data=1
... или...
<form action="somepage.php" method="get">
<input type="hidden" name="data" value="1" />
<input type="submit" value="Submit">
</form>
Однако с запросом POST я видел только данные, отправляемые через такие элементы формы:
<form action="somepage.php" method="post">
<input type="hidden" name="data" value="1" />
<input type="submit" value="Submit">
</form>
Если у меня есть только один параметр, который я хочу отправить на другую страницу с помощью POST, есть ли более простой способ, чем обернуть его в форме?
Существует только два способа отправки POST из браузера: форма или запрос Ajax.
Используя только HTML, форма является единственным способом генерации запроса POST. Вы можете использовать скрипты на стороне сервера /Javascript для генерации POST-запросов другими способами, но никаких других способов сделать с простым HTML не существует.
Как вы уже обнаружили, существует ровно два способа передачи данных по протоколу http: GET
или POST
. Существует также HTTP-сообщение третьего типа, называемое HEAD
, но оно действительно используется только для получения метаданных вокруг ресурса без его загрузки и широко не реализовано.
Очевидно, что оба GET
и POST
легко доступны с помощью тега <form>
. GET
также легко доступен, вручную добавляя параметры запроса к URL-адресу в виде пар имя-значение (foo.html?a=1&b=2
).
Однако красота и сложность POST
заключается в том, что пары имя-значение передаются из браузера на веб-сервер, заключенный в заголовок HTTP-запроса, который не так легко доступен. Единственный способ выполнить POST
без использования тега <form>
- это вручную изменить заголовок HTTP-запроса и добавить пары имени-значения в себя.
Также имейте в виду, что HTTP-сервер не знает, действительно ли запрос (GET
или POST
) пришел из главного окна браузера или вызова AJAX. Независимо от того, что веб-сервер прочитает запрос, расшифрует, если это запрос GET
или POST
, ищите пары имени и значения, если это необходимо, и создайте ответ.
Если вы хотите получить дополнительную информацию о том, как правильно форматировать запрос POST
, вы можете перейти на jmarshall.com/easy/http/ или, возможно, tcpipguide.com/free/t_HTTPRequestMessageFormat.htm. Конечным ресурсом всегда является W3C, но иногда RFC могут быть ужасно запутанными для нас, простых смертных, чтобы читать.
В HTML только он с формой.
Но вы можете это сделать, если играете со своей серверной стороной. Вот хорошая статья, которая показывает вам, как манипулировать Получить, чтобы изменить его на пост через PHP. Это потребует, чтобы вы играли с fsockopen... Этот способ для этого будет использовать ваш параметр? Id = 1 & param = 2... и создаст запрос POST на стороне сервера. Вы можете сделать его общим, как только он его установит, он будет работать, но он немного работает, чтобы сначала настроить все.
Конечно, вы всегда можете сделать GET на странице, которая содержит логику на стороне сервера (или AJAX), которая создаст запрос POST (например, GET/pageWhichCreatesAPost.py). Конечно, очень беспорядочно, но могут быть случаи, когда такая работа может быть полезной.