是通过表单在HTML中传递POST参数的唯一方法吗?

时间:2008-11-28 14:46:50

标签: html http post get

在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将一个参数发送到另一个页面,是否比将其包装在表单中更简单?

5 个答案:

答案 0 :(得分:31)

只有两种方法可以通过浏览器进行发布 - 表单或Ajax请求。

答案 1 :(得分:7)

仅使用HTML,表单是生成POST请求的唯一方法。您可以使用服务器端脚本/ Javascript以其他方式生成POST请求,但没有其他方法可以使用纯HTML。

答案 2 :(得分:4)

正如您已经发现的,有两种方法可以通过http协议传输数据:GETPOST。还有一种名为HEAD的第三种HTTP消息,但它实际上只用于获取资源的元数据而不下载它,并且没有广泛实现。

显然,通过使用GET标记,可以轻松访问POST<form>。通过以名称 - 值对(GET)的形式手动将查询参数添加到URL,也可以轻松访问foo.html?a=1&b=2

然而,POST的优点和复杂性在于,名称 - 值对从浏览器传递到HTTP请求标头中包含的Web服务器,而不是那么容易访问。在不使用POST标记的情况下完成<form>的唯一方法是手动更改HTTP请求标头并在自己中添加名称 - 值对。

另请注意,HTTP服务器本质上不知道请求(GETPOST)是来自主浏览器窗口还是来自AJAX调用。无论如何,Web服务器将读取请求,如果是GETPOST请求将解密,请根据需要查找名称 - 值对,并生成响应。

如果您想了解有关如何正确设置POST请求格式的详细信息,可以转到jmarshall.com/easy/http/tcpipguide.com/free/t_HTTPRequestMessageFormat.htm。最终资源始终是W3C,但有时候RFC对于我们凡人来说都是非常混乱的。

答案 3 :(得分:1)

在HTML中只有表格。

但如果您使用服务器端,则可以执行此操作。这是一篇很好的文章,向您展示如何通过PHP操作Get to Change it to Post。这将要求您使用fsockopen ...这样做将使用您的参数?id = 1&amp; param = 2 ...并将在服务器端创建POST请求。您可以将其设为通用,一旦设置它将起作用,但首先设置所有内容是一件小事。

答案 4 :(得分:0)

您当然可以对包含服务器端(或AJAX)逻辑的页面执行GET操作,该逻辑将创建POST请求(例如GET /pageWhichCreatesAPost.py)。当然非常混乱,但可能会出现这种解决方案可能有用的情况。

相关问题