2013-04-22 2 views
0

Я пытаюсь использовать функцию jQuery Ajax для удаления строки в базе данных MySQL. Когда я нажимаю на ссылку «удалить сообщение», я хочу, чтобы она вызывала событие onClick, которое будет запускать функцию удаления строки.Функция удаления Ajax не работает

Это мой код до сих пор:

Во-первых отображать сообщения со ссылкой на удаление каждого из них.

foreach($postarray AS $value){ 
echo '<div class="item">'.$value['post_title'].' , <a href="#" class="delete_link" value="'. $value['post_id'] .'">Delete Post</a></div>'; 

} 

Тогда Jquery:

$(document).ready(function(){ 
$(".delete_post").click(function(){ 
     var id = $(this).attr("value"); 

     function deletePost(id){ 
      $.ajax({ 
       type: "POST", 
       url: "delete_post.php", 
       data: {id: id}, 
       success: function(data){ 
        alert("Post deleted"); 
       } 
      }) 
     } 
    }); 

}); 

и delete.php код:

//Start the session 
session_start(); 
require_once('func/auth.class.php'); 
require_once('func/functions.php'); 
require_once('func/db.class.php'); 

// Check if user is logged in 
if(!$_SESSION['is_admin'] || empty($_POST['id'])){ 
    header("Location: index.php"); 
} 

$post_id = $_POST['id']; 
delete_post($post_id); 

и delete_post() функция:

function delete_post($post_id){ 
     global $dbh; 

     $stmt = $dbh->prepare("DELETE FROM mjbox_posts WHERE post_id = ?"); 
     $stmt->bindValue(1, $post_id, PDO::PARAM_INT); 
     $stmt->execute(); 

     if($stmt->rowCount() != 0){ 
      return TRUE; 
     }else{ 
      return FALSE; 
     } 
    } 

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

+1

Я не вижу класс '«delete_post»' – jcho360

+0

@ jcho360 я, я вижу только «delete_link» класс –

+1

Мой плохо, забыл изменить, что более при упрощении для стека – crm

ответ

1

Как упоминалось в комментарии jcho360, у вас есть ошибка в классе css при привязке к событию click.

Как только вы исправите это, он все равно не будет работать. Когда вы запускаете событие click, вы объявляете функцию, которая удаляет сообщения, но вы ее не вызываете. Одним из способов исправить может изменить его на следующее:

$(document).ready(function(){ 
    $(".delete_link").click(function(){ 
     var id = $(this).attr("value"); 

     $.ajax({ 
      type: "POST", 
      url: "delete_post.php", 
      data: {id: id}, 
      success: function(data){ 
       alert("Post deleted"); 
      } 
     }); 
    }); 
}); 

Таким образом, вы на самом деле делаете запрос, когда событие щелчка обжигают.

Далее я просто заметил, что в вызове ajax вы запрашиваете «delete_post.php», но вы упомянули, что ваш php-файл называется delete.php. Это также необходимо исправлять.

Вы можете использовать инспектора в своем браузере, чтобы узнать, что произойдет, щелкнув ссылку. Выполняет ли это запрос вообще? Правильно ли установлен параметр id? И так далее.

Смежные вопросы