Maw*_*awg 36 php http http-get http-post
基本上,我认为我不能,但很高兴被证明是错的.
我在PHP中动态生成HTML菜单,为每个当前用户添加一个项目,以便我得到类似的东西<a href="process_user.php?user=<user>>
,但我喜欢POST而不是GET.
有没有办法将信息作为POST参数传递,而不是从可点击的HREF链接传递?
更新:对不起,我不允许使用JS - 我应该说,我的不好
更新到更新:看起来@Rob正在使用"您可以使用按钮而不是锚点,只需将按钮设置为看起来像链接.这样您就可以将隐藏字段中的值放在同一表单中通过POST发送"
Pet*_*tah 45
您可以使用样式为链接的表单,不需要JavaScript:
<form action="/do/stuff.php" method="post">
<input type="hidden" name="user_id" value="123" />
<button>Go to user 123</button>
</form>
Run Code Online (Sandbox Code Playgroud)
CSS:
button {
border: 0;
padding: 0;
display: inline;
background: none;
text-decoration: underline;
color: blue;
}
button:hover {
cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)
请参阅:http://jsfiddle.net/SkQRN/
dec*_*eze 13
URL中的参数是GET参数,请求体(如果存在)是POST数据.因此,根据定义,您的基本前提是无法实现的.
您应该根据操作选择是使用POST还是GET.POST请求应始终调用任何破坏性操作,即永久更改服务器状态(删除,添加,编辑)的操作.任何纯粹的"信息检索"都应该通过不变的URL(即GET请求)访问.
要发出POST请求,您需要创建一个<form>
.你可以使用Javascript来创建一个POST请求,但我不建议使用Javascript这么基本的东西.如果你想让你的提交按钮看起来像一个链接,我建议你使用普通的提交按钮创建一个普通的表单,然后使用CSS重新设置按钮和/或使用Javascript替换按钮以提交表单的链接使用Javascript(取决于更好地再现所需的行为).这是渐进增强的一个很好的例子.
Rob*_*Rob 11
您可以在链接单击时使链接执行ajax post请求.
在jQuery中:
$('a').click(function(e) {
var $this = $(this);
e.preventDefault();
$.post('url', {'user': 'something', 'foo': 'bar'}, function() {
window.location = $this.attr('href');
});
});
Run Code Online (Sandbox Code Playgroud)
您还可以使用javascript使链接提交POST表单
<form action="url" method="post">
<input type="hidden" name="user" value="soemthing" />
<a href="#">CLick</a>
</form>
<script>
$('a').click(function(e) {
e.preventDefault();
$(this).parents('form').submit();
});
</script>
Run Code Online (Sandbox Code Playgroud)
我也想分享我的实施.它确实需要一些JavaScript.
<form action="./index.php" id="homePage" method="post" style="display: none;">
<input type="hidden" name="action" value="homePage" />
</form>
<a href="javascript:;" onclick="javascript:
document.getElementById('homePage').submit()">Home</a>
Run Code Online (Sandbox Code Playgroud)
关于这一点的好处是,与GET请求相反,它不显示URL上的参数,这更安全.
不,你不能那样做.我邀请您阅读POST定义:http://en.wikipedia.org/wiki/POST_%28HTTP%29
或者这个页面:http://en.wikipedia.org/wiki/GET_%28HTTP%29#Request_methods
首先,免责声明:我不认为将POST与URL参数结合使用不是一个好主意。就像其他建议一样,最好使用隐藏的表单传递用户信息。
但是,一个问题使我感到好奇,PHP如何处理这种情况。事实证明,从理论上讲这是可能的。这是一个证明:
post_url_params.html
<!DOCTYPE html>
<html>
<head></head>
<body>
<form method="post" action="post_url_params.php?key1=value1">
<input type="hidden" name="key2" value="value2">
<input type="hidden" name="key3" value="value3">
<input type="submit" value="click me">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
post_url_params.php
<?php
print_r($_POST);
print_r($_GET);
echo $_SERVER['REQUEST_METHOD'];
?>
Run Code Online (Sandbox Code Playgroud)
输出量
Array ( [key2] => value2 [key3] => value3 )
Array ( [key1] => value1 )
POST
Run Code Online (Sandbox Code Playgroud)
可以清楚地看到PHP将URL参数存储在$ _GET变量中并将表单数据存储在$ _POST变量中。我怀疑这是非常特定于PHP和服务器的,绝对不是要依赖的东西。