JQuery AJAX удалить скрипт на самом деле не удаляет - PullRequest
0 голосов
/ 28 мая 2010

У меня есть небольшое персональное веб-приложение, над которым я работаю. У меня есть ссылка, по которой при щелчке предполагается сделать ajax-вызов php, который должен удалить эту информацию из базы данных. По какой-то неизвестной причине он фактически не удалит строку из базы данных. Я перепробовал все, что знаю, но все равно ничего. Я уверен, что это что-то невероятно простое ... Вот сценарии.

Вывод базы данных:

 $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-скрипт:

$(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;
 });
});

Удалить код:

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 ]

3 голосов
/ 28 мая 2010

Ах, только что заметил вашу ошибку, во время генерации вы не устанавливаете атрибут id. Это должно быть что-то вроде:

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

Конечно, это только непосредственный пример, вы должны избегать подобных вещей, но это должно позволить вам получить доступ к элементу в jQuery.

0 голосов
/ 28 мая 2010

Возможно, вы захотите изменить свой скрипт удаления, чтобы он не просто перенаправлял после запроса БД. Поскольку он вызывается через AJAX, пусть он по крайней мере возвращает код успеха / ошибки в javascript:

// 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()));
}

Неправильно предполагать, что вызов базы данных выполнен успешно.

...