Ссылка не может POST
данные, только GET
.
В отличие от метода запроса GET, когда на сервер отправляются только URL и заголовки, запросы POST также включают сообщениетело.Это позволяет отправлять на сервер данные произвольной длины любого типа.
По сути, POST
требует два запроса, 1) сервер получает "обычный" запрос с дополнительным заголовкомзначение, указывающее, что необходимо отправить больше данных.В этот момент сервер отправляет подтверждение и 2) клиент отправляет тело POST
.Такое поведение не может быть достигнуто только с помощью ссылки.
Тем не менее, есть решения для этого, и я видел некоторые методы, среди прочего, для вывода form
с автоматической отправкой, что-то вроде
<form name="frm" method="post" action="http://your.domain.com/path/to/page.php?param1=1¶m2=2">
<input type="hidden" name="foo" value="bar" />
</form>
<script type="text/javascript">
document.forms["frm"].submit();
</script>
, что приведет к вызову page.php
с этими аргументами
$_GET = array('param1' => '1', 'param2' => '2');
$_POST = array('foo' => 'bar');
Обратите внимание, что это простой метод "перенаправления", но вы можете создать <a>
элементы, чтобы фактически вызвать некоторую скрытую форму, подобную этой.вместо использования стандартной ссылки.(непроверенный код)
<a href="http://your.domain.com/path/to/page.php?param1=1¶m2=2" onclick="return dopost(this.href, {foo:'bar'});">A simple link</a>
<script type="text/javascript">
function dopost(url, params) {
var pe = '';
for (var param : params) {
pe += '<input type="hidden" name="'+param+'" value="'+params[param]+'" />';
}
var frmName = "frm" + new Date().getTime();
var form = '<form name="'+frmName+'" method="post" action="'+url'">'+pe+'</form>';
var wrapper = document.createElement("div");
wrapper.innerHTML = form;
document.body.appendChild(wrapper);
document.forms[frmName].submit();
}
</script>
Это, вероятно, то, что вам нужно, на самом деле.