如何在URL中传递POST参数?
基本上,我认为我不能,但会很高兴被证明是错误的。如何在URL中传递POST参数?
我在PHP中动态生成一个HTML菜单,为每个当前用户添加一个项目,以便得到类似于<a href="process_user.php?user=<user>>
的东西,但我有一个POST over GET的偏好。
有什么办法可以将信息作为POST参数传递,而不是通过可点击的HREF链接传递信息?
更新:对不起,我不能使用JS - 我早该说,是我不好
更新到更新:它看起来像@Rob是与“你可以给somethign使用按钮而不是锚点,只需将按钮样式设置为链接就可以了。这样,您可以通过POST发送同一表单中隐藏字段的值“
你可以使用样式为纽带形式,没有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;
}
不,您不能这样做。 我请你阅读POST定义:http://en.wikipedia.org/wiki/POST_%28HTTP%29
或本页面:http://en.wikipedia.org/wiki/GET_%28HTTP%29#Request_methods
您可以使链接单击时执行AJAX POST请求。
在jQuery中:
$('a').click(function(e) {
var $this = $(this);
e.preventDefault();
$.post('url', {'user': 'something', 'foo': 'bar'}, function() {
window.location = $this.attr('href');
});
});
你也可以将链接提交POST形式与JavaScript
<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>
参数中的URL的GET参数,请求主体,如果存在的话,是POST数据。所以你的基本前提根据定义是不可行的。
您应根据操作选择是使用POST还是GET。任何破坏性的动作,即永久改变服务器状态(删除,添加,编辑)的东西应始终由POST请求调用。任何纯粹的“信息检索”应该可以通过不变的URL(即GET请求)访问。
要发出POST请求,您需要创建<form>
。你可能使用Javascript来创建一个POST请求,但我不会推荐使用Javascript的基本东西。如果你想让你的提交按钮看起来像一个链接,我建议你用普通的提交按钮创建一个正常的表单,然后使用CSS来重新设置按钮和/或使用Javascript来替换按钮提交表单的链接使用Javascript(取决于更好地再现所需行为)。这将是渐进增强的一个很好的例子。
如果php脚本为隐藏字段的每个条目生成一个表单并且href使用javascript发布表单,这可能会有效。
我想和大家分享我的执行情况以及。它确实需要一些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>
不错的是,这与GET请求相反,它不显示URL上的参数,这是更安全。
完美谢谢!!!!!! +1像一个魅力。添加'target =“_ blank”'更好。 – 2015-04-10 05:25:22
首先,免责声明:我不认为用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>
post_url_params.php
<?php
print_r($_POST);
print_r($_GET);
echo $_SERVER['REQUEST_METHOD'];
?>
输出
Array ([key2] => value2 [key3] => value3)
Array ([key1] => value1)
POST
可以清楚地看到PHP将URL参数存储在$ _GET变量中,并在$ _POST变量中形成数据。不过,我怀疑它非常适合PHP和服务器,绝对不是依靠它。
您使用的是表单或javascript ajax。,对不起没有办法在url中传递帖子 – Ibu 2011-06-02 05:46:58
只有一个解决方案:[jQuery.Ajax()](http://api.jquery.com/jQuery.ajax/) – diEcho 2011-06-02 05:49:44
什么“process_user”呢?它更新/创建信息或只是搜索? – 2011-06-02 05:51:29