如何在URL中传递POST参数?

2022-08-30 11:50:02

基本上,我认为我不能,但我很乐意被证明是错的。

我在PHP中动态生成一个HTML菜单,为每个当前用户添加一个项目,这样我就得到了类似的东西,但我更喜欢POST而不是GET。<a href="process_user.php?user=<user>>

有没有办法将信息作为 POST 参数传递,而不是从可单击的 HREF 链接获取?

我不被允许使用JavaScript。


看起来Rob正在做一些事情,“你可以使用按钮而不是锚点,只是将按钮设计成看起来像一个链接。这样,您就可以通过POST将值放在同一表单内的隐藏字段中”


答案 1

您可以使用样式设置为链接的表单。不需要 JavaScript:

<form action="/do/stuff.php" method="post">
    <input type="hidden" name="user_id" value="123" />
    <button>Go to user 123</button>
</form>

CSS:

button {
    border: 0;
    padding: 0;
    display: inline;
    background: none;
    text-decoration: underline;
    color: blue;
}
button:hover {
    cursor: pointer;
}

请参见: http://jsfiddle.net/SkQRN/


答案 2

URL 中的参数是 GET 参数,请求正文(如果存在)是 POST 数据。因此,根据定义,您的基本前提是无法实现的。

您应该根据操作选择是使用 POST 还是 GET。任何破坏性操作,即永久更改服务器状态(删除,添加,编辑)的东西应始终由POST请求调用。任何纯粹的“信息检索”都应该可以通过一个不变的URL(即GET请求)访问。

要发出 POST 请求,您需要创建一个 .你可以使用Javascript来创建一个POST请求,但我不建议使用Javascript来做一些如此基本的事情。如果你想让你的提交按钮看起来像一个链接,我建议你创建一个带有普通提交按钮的普通表单,然后使用CSS重新设置按钮的样式和/或使用Javascript将按钮替换为使用Javascript提交表单的链接(取决于什么更好地再现了所需的行为)。这将是渐进式增强的一个很好的例子。<form>


推荐