jQuery ajax betik aslında silme silemezsiniz

2 Cevap php

Ben üzerinde çalışıyorum biraz kişisel webapp var. Ben, tıklandığında, bir veritabanından bu bilgi silmek gerekiyordu bir php için bir ajax arama yapmak gerekiyordu bir bağlantı var. Bilinmeyen bir nedenle, aslında veritabanından satır silmez. Biliyorum her şeyi denedim, ama hala hiçbir şey ettik. Ben inanılmaz derecede kolay bir şey olduğundan emin değilim ... İşte söz komut vardır.

Veritabanı çıkışı:

 $sql = "SELECT * FROM bookmark_app";
    foreach ($dbh->query($sql) as $row)
 {
 echo '<div class="box" id="',$row['id'],'"><img src="images/avatar.jpg" width="75" height="75" border="0" class="avatar"/>
     <div class="text"><a href="',$row['url'],'">',$row['title'],'</a><br/>
     </div>
            /*** Click to delete ***/
     <a href="?delete=',$row['id'],'" class="delete">x</a></div>
  <div class="clear"></div>';
        }

    $dbh = null;

Ajax komut:

$(document).ready(function() {
$("a.delete").click(function(){

 var element = $(this);

 var noteid = element.attr("id");

 var info = 'id=' + noteid;

  $.ajax({
    type: "GET",
    url: "includes/delete.php",
    data: info,
    success: function(){
    element.parent().eq(0).fadeOut("slow");
    }
  });
 return false;
 });
});

Kodunu silin:

include('connect.php');

//delete.php?id=IdOfPost
if($_GET['id']){

$id = $_GET['id'];

//Delete the record of the post
$delete = mysql_query("DELETE FROM `db` WHERE `id` = '$id'");

//Redirect the user
header("Location:xxxx.php");

}

2 Cevap

Ah sadece href size id özniteliği ayarlayarak değil üreten konum, sizin hata fark. Bu gibi bir şey olmalıdır:

<a href="..." id="'. $row['id'] . '" class="delete">x</a>

Tabii bu sadece bir acil örnek, sen must bu tür şeyleri kaçmak ama bu jQuery öğeye erişmek izin vermelisiniz.

Eğer silme komut sadece DB sorgu sonrasında yönlendirmek değil değiştirmek isteyebilirsiniz. Bu AJAX denir ediliyor beri, en azından javascript bir başarı / hata kodu döndürür var:

// can't return $delete unconditionally, since *_query() returns an object
if ($delete) { 
   return(json_encode(array('code' => 1, 'msg' => 'Delete succeeded')));
} else {
   return(json_encode(array('code' => 0, 'msg' => 'Delete failed: ' . mysql_error()));
}

Bu, bir veritabanı çağrısı başarılı varsaymak kötü bir uygulamadır.