2011-12-30 29 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?")' /> 

這將完全相同的方式作出迴應。