Php href超链接作为帖子
我想知道映射执行HTTP GET的超链接以执行HTTP POST(我希望避免传递URL中的所有变量)的最佳方法是什么?例如,下面的2Php href超链接作为帖子,php,forms,post,get,Php,Forms,Post,Get,我想知道映射执行HTTP GET的超链接以执行HTTP POST(我希望避免传递URL中的所有变量)的最佳方法是什么?例如,下面的2hrefs。此外,我还想摆脱submit按钮,使用常规的超链接。有什么建议吗 <form action="test.php?action=update" method="post" id="cart"> <table> <tr> <td> <a href="test.php
hrefs
。此外,我还想摆脱submit
按钮,使用常规的
超链接。有什么建议吗
<form action="test.php?action=update" method="post" id="cart">
<table>
<tr>
<td>
<a href="test.php?action=delete&id=<?php echo $id ?>" class="r">
remove
</a>
</td>
<td>
<a href="test.php?action=add&id=<?php echo $id ?>" class="r">add</a>
</td>
</tr>
<tr>
...
</tr>
</table>
<div> <button type="submit">Update</button> </div>
</form>
...
更新
您可以将输入标记隐藏在表单中,以POST的形式提交
<td><a href="test.php?action=delete&id=<?php echo $id;?>" class="r">remove</a></td>
<td><a href="test.php?action=add&id=<?php echo $id;?>" class="r">add</a></td>
使用两种形式重写上述内容,我建议使用and。当点击链接时,通过如下方式提交数据
$('.r').on('click', function() {
$.post('test.php', {key:'value', key2:'value2'}, function(data) {
//error check here
});
return false;
});
据我所知,你不能执行任何带有链接的POST请求。对于禁用javascript的用户和启用javascript的用户,您可以使用链接和php发出GET请求,取消使用javascript的链接的默认行为,并在ajax的帮助下使用ajax发出POST请求 例如:
<a class="submit" href="hallo.html?hello=world&test=yes">Test</a>
您还可以编写其他POST函数以查看更多信息
另外,我想,如果你以任何方式使用表单,为什么不使用提交按钮,是因为CSS样式吗?您可以像其他任何元素一样对其进行样式设置(在某些浏览器中进行了一些调整)。没有AJAX或表单,您无法提交帖子。@Jivings,我不想摆脱
表单,但要在URL中传递变量,您只需要用输入元素替换链接。@Jivings,但是对于隐藏的输入元素,哪一个应该是值
,例如,我有action=delete
或action=add
,它们出现在两个单独的超链接中。元素的名称是action
,值是delete
或add
。阅读HTML表单。查看我所做的更改。我没有给出完整的代码,只是你的家庭作业。你甚至可以使用相同的表单运行此操作,但需要在动作脚本上附加条件。如果我使用两个附加表单,一个是
,另一个是
,我将在第三天结束时使用3个表单,一个是外部表单,其中包含这两个新表单,是否可以使用嵌套的表单
s?如果可以正确编写操作脚本,则不需要嵌套表单,或者不需要多个表单。请参阅本文,尽管这是正确的,但OP更重要的是在开始使用jQuery和进行AJAX调用之前,了解如何正确使用HTML表单。是的,但要将锚定链接映射到post请求,它将不可避免地在某个时候终止于ajax。没有锚定。它们应该是表单元素。我只是根据问题中发布的内容,映射到PostStack Exchange不仅仅是为了回答问题,而是为了确保海报能够更好地理解。这是一个很好的例子。
<a class="submit" href="hallo.html?hello=world&test=yes">Test</a>
$('.submit').click(function(){
var urlPairs = this.href.split('?')[1].split('&'),
total = urlPairs.length,
current = [],
data = {};
for(;total;) {
current = urlPairs[--total].split('=');
data[current[0]] = current[1];
}
$.post('test.php', data);
return false;
});