我想知道哪种方法是映射执行HTTP GET的<a href=...></a>
超链接以执行HTTP POST(我想避免传递URL中的所有变量)?例如,下面的 2 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>
我建议使用 jQuery.post 并单击。单击链接后,通过类似以下内容提交数据
$('.r').on('click', function() {
$.post('test.php', {key:'value', key2:'value2'}, function(data) {
//error check here
});
return false;
});
据我所知,您无法使用链接执行任何 POST 请求。您可以使用链接和 php 发出 GET 请求,作为禁用 javascript 的用户和启用 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 函数文档
附言我伤了,如果你以任何方式使用FORM,你为什么不使用提交按钮,是因为CSS样式吗?您可以像任何其他元素一样设置它的样式(在某些浏览器中进行了一些调整)。
您可以将输入标签隐藏在表单中,以将其作为 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); ?>