我有一个带复选框的表格表。我希望用户检查他们想要删除的网址(元素),按一个按钮,然后调用“delete.php”文件,删除mysql中的该记录。
我遇到的问题是如何使用表单外部的按钮调用delete.php文件。我知道您通常会在表单中使用提交按钮,但在这种情况下,我正在探索是否可以使用外部的按钮来执行此操作。
附上图片以说明我想要这样做的原因。底部的url菜单由函数调用,因为我希望它是模块化的。所以我认为“删除BM”问题需要能够删除已选中的复选框。
我搜索了各种搜索案例,这些案例并没有真正回答我的问题:
How to send checkbox state through form in a table
Search "php how to call php file outside form"
Search "how to call php file without submit button"
答案 0 :(得分:1)
你可以使用jQuery AJAX。
因为,使用表单提交调用PHP脚本将导致总页面刷新。
您只需要删除所选的复选框行并从数据库中删除该条目。
我将为它解释伪逻辑。
点击链接Delete BM
,为AJAX调用javascript。
首先打开确认对话框。
通过AJAX,将要删除的id传递给后端PHP文件。
在PHP文件中,编写代码以删除记录。
如果记录被删除,那么回复成功就会失败。
如果在AJAX中,我们得到结果success
,请删除相应的行。
答案 1 :(得分:1)
在过去,我遇到过这样的问题,即出于布局/演示原因需要在表单外部提交按钮。 经过考虑和阅读后,我了解到有一些很好的理由可以避免这样做;
更改浏览器的默认行为通常是一个坏主意,您为自己做了额外的工作,最终可能会使事情变得复杂,并且通常也会导致用户感到困惑。 (例如:如果用户点击进入会发生什么,它还会提交表单吗?)
没有最新javascript或未启用javascript的用户将无法使用您的表单/网站。
您可以实现您想要的效果,并且仍然使用标准的html提交按钮。使用CSS使其显示为文本链接,这是一个很好的例子;
How to make a submit button display as a link?
在您的示例中,我个人只是将提交按钮显示为一个按钮(样式与网站设计相匹配),直接位于复选框下方,与下面的菜单分开。因为这对我来说最有意义,并且可以节省一些工作,因为你不需要摆弄你的菜单功能。
但是如果你想要完全按照你的设置实现,可以将按钮(html字符串)作为参数传递到你的函数中,这样就可以将它输入到菜单列表中,然后返回所有菜单的html字符串并打印它在你的形式内;
<form>
<input type="checkbox" name="1" /><br />
<input type="checkbox" name="2" /><br />
<input type="checkbox" name="3" /><br />
<?php
$buttonHtml = '<input type="submit" name="delete_bm" value="delete bm" class="submitLink" />';
echo navMenu($buttonHtml);
?>
</form>
现在提交标记位于表单标记内(并且将按预期运行),它只是使用CSS来设置这些和任何其他元素的样式,以便为您提供所需的表示(可能需要删除填充)来自表格元素的边距等)。
.submitLink {
font: inherit;
background-color: transparent;
text-decoration: underline;
border: none;
color: blue;
cursor: pointer;
}
.submitLink:focus {
outline: none;
}
form{
padding: 0;
margin: 0;
}
最大的好处是,现在您不需要任何不必要的JavaScript,从而提供最大的可访问性并维护用户期望的功能。 对我来说也感觉不那么复杂,而且不太可能需要更新。
旁注:如果您的表单允许用户一次删除多个书签(似乎应该这样),您可能希望按钮上的文字可以阅读;删除书签希望你曾考虑过;)