调用php文件而不提交按钮

时间:2015-12-21 10:45:14

标签: php html forms

我有一个带复选框的表格表。我希望用户检查他们想要删除的网址(元素),按一个按钮,然后调用“delete.php”文件,删除mysql中的该记录。

我遇到的问题是如何使用表单外部的按钮调用delete.php文件。我知道您通常会在表单中使用提交按钮,但在这种情况下,我正在探索是否可以使用外部的按钮来执行此操作。

附上图片以说明我想要这样做的原因。底部的url菜单由函数调用,因为我希望它是模块化的。所以我认为“删除BM”问题需要能够删除已选中的复选框。

enter image description here

我搜索了各种搜索案例,这些案例并没有真正回答我的问题:

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"

Call php file without using form action

Submit without submit button

2 个答案:

答案 0 :(得分:1)

你可以使用jQuery AJAX。

因为,使用表单提交调用PHP脚本将导致总页面刷新。

您只需要删除所选的复选框行并从数据库中删除该条目。

我将为它解释伪逻辑。

点击链接Delete BM,为AJAX调用javascript。

首先打开确认对话框。

通过AJAX,将要删除的id传递给后端PHP文件。

在PHP文件中,编写代码以删除记录。

如果记录被删除,那么回复成功就会失败。

如果在AJAX中,我们得到结果success,请删除相应的行。

jQuery $.ajax()

答案 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,从而提供最大的可访问性并维护用户期望的功能。 对我来说也感觉不那么复杂,而且不太可能需要更新。

旁注:如果您的表单允许用户一次删除多个书签(似乎应该这样),您可能希望按钮上的文字可以阅读;删除书签希望你曾考虑过;)