【问题标题】:Javascript confirm with PHP function afterwardJavascript 之后用 PHP 函数确认
【发布时间】:2011-12-30 14:31:34
【问题描述】:

我想要一种在用户单击“删除”删除记录时弹出确认框的方法。

类似:

<script language="JavaScript"  type="text/javascript" >

function confirmDelete() {
    if(confirm("Would you like to delete the selected products?")) {
        <?php 
            $allCheckBoxId = $_POST['checkbox'];
            array_map ('mysql_real_escape_string', $allCheckBoxId);
            $ids = implode(",", $allCheckBoxId);
            $sql = "DELETE FROM products WHERE `id` IN ($ids)";
            mysql_query($sql);
        ?>
    }
}

</script>

点击一下:

echo "<input type='submit' name='submit' value='Delete'  onclick='confirmDelete()' />";

但我知道不可能像这样同时使用 Javascript 和 PHP。还有另一种方法可以做到这一点吗?也许 PHP 有自己的确认方式?请给出任何想法!

谢谢。

【问题讨论】:

    标签: php javascript confirm


    【解决方案1】:

    在这种情况下使用 AJAX 非常容易。只需将您的 PHP 放在 scriptDelete.php 文件中,并确保在 data 属性中传递正确的参数及其值。对于这个例子,我只传递了一个 5id

    <script type="text/javascript">
    
        function confirmDelete() {
            if (confirm('Are you sure you want to delete this?')) {
                //Make ajax call
                $.ajax({
                    url: "scriptDelete.php",
                    type: "POST",
                    data: {id : 5},
                    dataType: "html", 
                    success: function() {
                        alert("It was succesfully deleted!");
                    }
                });
    
            }
        }
    </script>
    
    <input type='submit' name='submit' value='Delete'  onclick='return confirmDelete()' />
    

    另一种方法是将表单发布回自己的页面,例如:

    <form method="post" action="yourpage.php">
        <input type="submit" name="submit" value="delete" onclick="return confirm('Are you sure you want to delete this?')" />
    </form>
    

    因此,您只需将表单发回yourpage.php,然后在此页面顶部执行以下操作:

    <?php
    
       //Means the form was submitted
       if ($_POST['submit']) {
          $id = $_POST['idToDelete'];
          $query = "DELETE FROM products WHERE id = " . mysql_real_escape_string($id);
          mysql_query($query) or die(mysql_error());
       }
    ?>
    

    【讨论】:

      【解决方案2】:

      您应该将事件移动到表单中,并使用 onsubmit="confirmDelete()"。如果在 ConfirmDelete 函数中返回 false,则取消表单提交。如果返回 true,表单将像正常一样被提交,您可以在服务器端像普通表单一样处理它。

      <script type="text/javascript">
      function confirmDelete() {
          return window.confirm("Are you sure you want to delete this record?");
      }
      </script>
      
      <form action="myDelete.php" onsubmit="confirmDelete()">
          ....inputs
          <input type="submit" name="submit" value="Delete">
      </form>
      

      然后在服务器端有规律的处理代码

      【讨论】:

        【解决方案3】:

        最简单的方法是在提交之前执行一个 javascript 函数。如果点击false,则返回false,不提交:

        <form action="something.php" onSubmit="return confirm('Are you sure?');" method="post">
        // Fields
        // Fields
        <input type="submit" name="Submit" class="button" value="Submit">
        </form>
        

        【讨论】:

        • 谢谢!这很有效,并且是最容易实现的。
        • @Catia:请记住,内联事件处理程序是一种反模式。
        • 我不确定你所说的反模式是什么意思?
        • 实际上这不起作用,因为我还计划添加一个“添加”按钮。所以当有人点击添加时,我不希望它问“你确定吗?”不过谢谢!
        • @Catia:在软件工程中,反模式(或反模式)是一种可能常用但在实践中无效和/或适得其反的模式。
        【解决方案4】:

        简单的确认方式,而不是创建全新的功能。 这样做

        <input type="submit" name="Delete" onClick='return confirm("Sure you want Delete this Page?")' />
        

        这将完全以相同的方式响应。

        【讨论】:

          【解决方案5】:

          阿贾克斯。将您的 php 放在一个单独的文件中,并使用 ajax 将您要在查询中使用的 id 发送给它。我推荐jQuery .post

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多