【问题标题】:Calling php file without submit button在没有提交按钮的情况下调用 php 文件
【发布时间】:2015-12-21 10:45:13
【问题描述】:

我有一个带有复选框的表格。我希望用户检查他们想要删除的任何 url(元素),按下一个按钮,然后调用一个“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"

Call php file without using form action

Submit without submit button

【问题讨论】:

    标签: php html forms


    【解决方案1】:

    使用以下代码提交您的表单。 并在 google 中使用搜索关键字“在 php 中提交没有提交按钮的表单”。

    <form id="jsform" action="whatever you want">
    // input fields
    </form>
    
    <script type="text/javascript">
      document.getElementById('jsform').submit();
    </script>
    
    For Your Problem. Below are Sample code     
    
    <input type='checkbox' class='test' name='test' value='1'>
    <input type='checkbox' class='test' name='test' value='2'>
    <input type='checkbox' class='test' name='test' value='3'>
    <input type='checkbox' class='test' name='test' value='4'> 
    
    is somthing your checkboxes then following is the script
    
    <script>
    $(function(){
        $(".test").click(function(){
            var checkBoxValue = $(this).val();  // value of checkbox
            $.ajax(
            {
                url: "" // url of page where delete funcnality is written
                        // and id of field 
            })
            .done(function(data)
            {
                // success
            });
        });
    });
    </script>
    

    【讨论】:

    • 感谢@Vipin Singh,但我将在哪里输入
    • 当你点击复选框然后 onclick 事件触发然后使用 Ajax 你可以删除你的数据。我已经更新了我的答案,请看那里
    • 啊哈好吧。使用阿贾克斯。谢谢
    【解决方案2】:

    过去我遇到过这样的问题,即出于布局/演示的原因想要在表单之外添加一个提交按钮。 经过一番思考和阅读,我了解到有一些很好的理由可以避免这样做;

    • 更改浏览器的默认行为通常是个坏主意,您需要为自己做额外的工作,最终可能会使事情复杂化,并且往往还会导致用户感到困惑。 (例如:如果用户点击回车会发生什么,它仍然会提交表单吗?)

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

    旁注:如果您的表单允许用户一次删除多个书签(看起来应该如此),您可能希望按钮上的文本能够阅读;删除书签希望你已经考虑过;)

    【讨论】:

      【解决方案3】:

      您可以为此使用 jQuery AJAX。

      因为,通过表单提交调用 PHP 脚本会导致整个页面刷新。

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

      我会解释它的伪逻辑。

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

      首先打开一个确认对话框。

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

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

      如果记录被删除,则回显成功,否则失败。

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

      jQuery $.ajax()

      【讨论】:

        猜你喜欢
        • 2014-04-09
        • 2011-12-04
        • 2010-12-26
        • 1970-01-01
        • 1970-01-01
        • 2017-07-13
        • 2021-12-20
        • 1970-01-01
        • 2012-04-18
        相关资源
        最近更新 更多