24

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

4

5 回答 5

31

从浏览器只有两种 POST 方式 - 表单或Ajax请求。

于 2008-11-28T14:49:46.233 回答
7

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

于 2008-11-28T14:51:01.393 回答
4

正如您已经发现的那样,通过 http 协议传输数据有两种方式:GETPOST. 还有第三种类型的 HTTP 消息称为HEAD,但它实际上只用于获取资源周围的元数据而不下载它,并且没有被广泛实施。

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

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

还要记住,HTTP 服务器本质上并不知道请求(GETPOST)是来自主浏览器窗口还是来自 AJAX 调用。无论如何,Web 服务器将读取请求,将破译它是否是GET请求POST,查找适当的名称-值对,并生成响应。

如果您想了解有关如何正确格式化POST请求的更多详细信息,您可以访问jmarshall.com/easy/http/tcpipguide.com/free/t_HTTPRequestMessageFormat.htm。权威资源始终是W3C,但有时 RFC 可能会让我们这些凡人难以阅读。

于 2008-11-28T15:47:21.983 回答
2

只有在 HTML 中它带有一个表单。

但是,如果您使用服务器端,您可以做到这一点。这是一篇很好的文章,向您展示了如何通过 PHP操作Get 以将其更改为 Post 。这将需要您使用 fsockopen... 这种方式将使用您的参数 ?id=1¶m=2 ... 并将在服务器端创建一个 POST 请求。您可以使其通用,一旦设置它就可以工作,但是首先设置所有东西需要一点工作。

于 2008-11-28T14:55:35.333 回答
0

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

于 2008-11-28T15:51:50.367 回答