2013-07-21 87 views
0

我試圖通過<li id='{$row['id']}'>刪除它的工作原理,但是從mysql刪除記錄失敗只會刪除它的前端。是否可以通過使用attr定義ID來刪除?這裏是我當前的代碼:用attr ajax刪除記錄

PHP,(工作正常,並刪除多個字段)

$id = (int) $_GET['id']; 
$sql = "DELETE FROM img_nav WHERE id = :id"; 
$sql = "DELETE FROM img_landing WHERE id = :id"; 
$sql = "DELETE FROM img_slider WHERE id = :id"; 

$stmt = $db->prepare($sql); 
$stmt->bindParam(':id', $_GET['id'], PDO::PARAM_INT); 
$stmt->execute(); 

我的jQuery /阿賈克斯

jQuery(document).ready(function(){ 
    $(".deleteitem").click(function(){ 

    var parent = $(this).closest('li'); 
    var id = parent.attr('id'); 

    $.ajax({ 
     type: "POST", 
     data: "id=" +id, 
     URL: "delete.php", 
     success: function(){ 
     $('#'+id).remove(); 
     } 
    }); 
    }); 
}); 

的HTML標記,我贊同用PHP/PDO內容:

<li id='{$row['id']}'> 
<div class='imgHover'> 
<div class='hover'> 
<a href='#' ><img src='../img/delete.png'></a></div><img src='{$row['path']}'> 
</div></li> 

當直接鏈接到delete.php我沒有問題,它工作正常,它是理由不要發送帶有問題的ajax的ID。這可能是MAMP的問題嗎?我沒有遠程測試。

回答

0

問題出在您如何檢索服務器上的數據。

type: "POST" 

是你在你的AJAX調用指示,但在服務器上你做

$id = (int) $_GET['id']; 

所以你永遠捕捉後。將$_GET[]更改爲$_POST[]

注意

只是一個小紙條,如果強制轉換,爲(int),你送一小部分/浮動,它會朝圓0,不起來了。所以3.57(int)3

+0

謝謝你的幫助,我已經做出了修改,但仍然沒有運氣,我也刪除(int)。任何其他建議將不勝感激。 –

+0

@User_coder直接導航到頁面'delete.php?id = 10',做一個'echo'

', print_r($_POST, true), '
'; exit();'然後看看轉儲的結果是什麼。如果所有的工作都正確,檢查'delete.php'的路徑以確保它解析到正確的位置。 – Ohgodwhy

+0

我得到一個空的'Array()'不能識別我的ID。再次感謝您的時間。我正試圖解決這個問題。仍然不知道我要去哪裏錯... –

0

如果你不知道你應該使用$ _GET或$ _POST,你可以使用$ _REQUEST。但你認爲這個查詢有什麼問題$ sql =「DELETE FROM img_nav WHERE id =:id」;等等?程序是否知道這是什麼?你應該試試$ sql =「DELETE FROM img_nav WHERE id ='{$ id}'」;我認爲它有效。