我想知道哪个是映射执行HTTP GET的<a href=...></a>
超链接以执行HTTP POST的最佳方式(我想避免传递URL中的所有变量)?例如,下面是hrefs
。此外,我还想摆脱submit
按钮并使用常规<a href=...></a>
超链接。有什么建议吗?
<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>
答案 0 :(得分:2)
我建议使用jQuery.post和click。点击链接后,通过类似的内容提交数据
$('.r').on('click', function() {
$.post('test.php', {key:'value', key2:'value2'}, function(data) {
//error check here
});
return false;
});
答案 1 :(得分:0)
您可以将输入标记保持为隐藏在表单中,以便将其作为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>
使用<input type="hidden" name="id />
两种形式重写上述内容
和按钮<input type="button" name="delete" />
等。
如果您在动作脚本中运行print_r($ _ POST)。您将获得按钮列表和隐藏字段的值。现在,您可以为要运行的操作编写条件。我没有在这里写完整的代码,只是传递了这个想法。
编辑:请参阅下面的示例。
<form method="post" id="cart">
<table>
<input type="hidden" name="id" value='some value' />
<input type="submit" name="action" value="delete" />
<input type="submit" name="action" value="add" />
</tr>
<tr>
...
</tr>
</table>
<div><button type="submit">Update</button></div>
</form>
<?php print_r($_POST); ?>
答案 2 :(得分:0)
据我所知,您无法使用链接执行任何POST请求。对于禁用了javascript的用户,你可以使用链接和php作为后备来获取GET请求,对于那些启用了javascript的用户,可以取消javascript链接的默认行为,并在AJAX的帮助下使用ajax你的POST请求。
例如:
<a class="submit" href="hallo.html?hello=world&test=yes">Test</a>
和js(我使用jquery)将是:
$('.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;
});
您还可以编写其他POST功能以获取更多信息,请查看jQuery post function doc
P.S。我更聪明,如果您使用FORM,为什么不使用提交按钮,是因为CSS样式?您可以像任何其他元素一样设置样式(在某些浏览器中进行一些调整)。