JavaScript确认后调用PHP函数

6
我希望能够在用户点击“删除”来删除记录时,弹出确认框的方法。 类似这样:
<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>

使用 onclick:

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

但我知道像这样同时使用Javascript和PHP是不可能的。是否有其他方法可以实现?也许PHP有自己的confirm函数?请提供任何想法!

谢谢。

5个回答

12

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

<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>

然后在服务器端设置常规处理代码。

1

不需要创建全新的函数,只需简单确认即可。

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

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

1
最简单的方法是在提交之前执行一个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:请记住,内联事件处理程序是一种反模式。 - Jules
您说的"反模式"是什么意思,我不太确定? - Catia
实际上这样做不行,因为我还计划添加一个“添加”按钮。所以当有人点击添加时,我不想让它询问“确定吗?”谢谢! - Catia
@Catia:在软件工程中,反模式(或antipattern)是一种常见但实际上是无效和/或具有反生产力的模式。 - Jules

0

Ajax。将您的php代码放在一个单独的文件中,并使用ajax发送要在查询中使用的id。我建议使用jQuery .post


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接