2011-12-30 34 views
4

我想要一个确认框弹出当用户点击“删除”删除记录的方式。Javascript确认PHP函数后

喜欢的东西:

<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有自己的确认?请给出任何想法!

谢谢。

回答

11

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

<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()); 
    } 
?> 
+0

谢谢!很有帮助。 – Catia 2011-12-30 19:10:12

+0

不客气。我很高兴它帮助你! – Jules 2011-12-31 12:00:46

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> 

然后对服务器端

0

阿贾克斯常规处理代码。将你的php放在一个单独的文件中,并使用ajax发送你想在你的查询中使用的id。我推荐jQuery .post

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

谢谢!这工作&是最容易实现我已经有。 – Catia 2011-12-30 14:59:23

+0

@Catia:请记住,内联事件处理程序虽然是反模式。 – Jules 2011-12-30 15:24:27

+0

我不确定你的反模式是什么意思? – Catia 2011-12-30 18:34:26

1

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

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

这将完全相同的方式作出回应。