ajax a href onclick get php variable и выполнить php-файл

Прежде чем задать этот вопрос, я уже упомянул пример этого вопроса . Однако, похоже, это не работает. Без использования ajax я могу удалить свой пост, но после реализации ajax, deleteAtc.php, похоже, не работает.

Мой код страницы удаления (delete.php)

<h4>Select an Article to Delete:</h4> <?php foreach ($articles as $article) { ?> <span><?php echo $article['article_title']; ?></span> <a href="#" id="link">Delete</a><br /> <script type="text/javascript"> $(function(){ $('#link').click(function(){ var id = <?php echo $article['article_id']; ?>; $.ajax({ type: "GET", url: "deleteAtc.php", data: "id"+id+, sucess: function() { $('#sucess').html(data); } }) return false; }); }); </script> <div id="success"></div><br /> <?php } ?> 

Хотя мой код deleteAtc.php:

 <?php session_start(); include_once('../includes/connection.php'); if (isset($_SESSION['logged_in'])) { if (isset($_GET['id'])) { $id = $_GET['id']; $query = $pdo->prepare('DELETE FROM articles WHERE article_id = ?'); $query->bindValue(1, $id); $query->execute(); echo "Article deleted"; } } ?> 

То, что я пытаюсь сделать здесь, – удалить запись без перенаправления на deleteAtc.php , она удалит запись и заменит Article Deleted

Могу я знать, где я ошибся в ajax?

См. Ниже обновленный вопрос


Основываясь на ответе ниже, вот мой обновленный код:

delete.php

 <h4>Select an Article to Delete:</h4> <div id="message"></div> <?php foreach ($articles as $article) { ?> <span><?php echo $article['article_title']; ?></span> <a href="#" class="link" data-artid="<?php echo $article['article_id']; ?>">Delete</a><br /> <?php } ?> 

скрипт

 <script type="text/javascript"> $(function(){ $('.link').click(function(){ var elem = $(this); $.ajax({ type: "GET", url: "deleteAtc.php", data: "id="+elem.attr('data-artid'), dataType:"json", success: function(data) { if(data.success){ elem.hide(); $('#message').html(data.message); } } }); return false; }); }); </script> 

deleteAtc.php

 <?php session_start(); include_once('../includes/connection.php'); if (isset($_SESSION['logged_in'])) { if (isset($_GET['id'])) { $id = $_GET['id']; $query = $pdo->prepare('DELETE FROM articles WHERE article_id = ?'); $query->bindValue(1, $id); $query->execute(); //Also try to handle false conditions or failure echo json_encode(array('success'=>TRUE,'message'=>"Article deleted")); } } ?> 

Как бы то ни было, если я удаляю по две записи за раз, только первая запись выполняет эхо-результат, второй удаленный результат не отражает результат.

Интересно, можно добавить jquery анимацию .show сообщение об успешном завершении и .hide запись удалена?

Прежде всего, идентификаторы не предназначены для дублирования, вместо этого используйте селектор классов. Также вы можете использовать атрибуты пользовательских данных для хранения идентификатора статьи.

Пытаться

 <h4>Select an Article to Delete:</h4> <div id="message"></div> <?php foreach ($articles as $article) { ?> <span><?php echo $article['article_title']; ?></span> <a href="#" class="link" data-artid="<?php echo $article['article_id']; ?>">Delete</a><br /> <?php } ?> 

скрипт

 <script type="text/javascript"> $(function(){ $('.link').click(function(){ var elem = $(this); $.ajax({ type: "GET", url: "deleteAtc.php", data: "id="+elem.attr('data-artid'), dataType:"json", success: function(data) { if(data.success){ elem.hide(); $('#message').html(data.message); } } }); return false; }); }); </script> 

И на стороне сервера

 <?php session_start(); include_once('../includes/connection.php'); if (isset($_SESSION['logged_in'])) { if (isset($_GET['id'])) { $id = $_GET['id']; $query = $pdo->prepare('DELETE FROM articles WHERE article_id = ?'); $query->bindValue(1, $id); $query->execute(); //Also try to handle false conditions or failure echo json_encode(array('success'=>TRUE,'message'=>"Article deleted")); } } ?> 

Вышеупомянутый скрипт не будет работать, вы должны изменить, как показано ниже. Вы повторяете одну и ту же функцию идентификатора снова и снова. Храните сценарий jquery вне цикла foreach. Вы должны добавить свойство класса с идентификатором статьи.

 <h4>Select an Article to Delete:</h4> <?php foreach ($articles as $article) { ?> <span><?php echo $article['article_title']; ?></span> <a href="#" id="link" class='<?php echo $article['article_id']; ?>' >Delete</a><br /> <div id="success"></div><br /> <?php } ?> <script type="text/javascript"> $(function(){ $('#link').click(function(){ var id = $(this).prop('class'); $.ajax({ type: "GET", url: "deleteAtc.php", data: "id="+id, sucess: function() { $('#sucess').html(data); } }) return false; }); }); </script> и <h4>Select an Article to Delete:</h4> <?php foreach ($articles as $article) { ?> <span><?php echo $article['article_title']; ?></span> <a href="#" id="link" class='<?php echo $article['article_id']; ?>' >Delete</a><br /> <div id="success"></div><br /> <?php } ?> <script type="text/javascript"> $(function(){ $('#link').click(function(){ var id = $(this).prop('class'); $.ajax({ type: "GET", url: "deleteAtc.php", data: "id="+id, sucess: function() { $('#sucess').html(data); } }) return false; }); }); </script> 

Вы создаете несколько ссылок с id="link" . Идентификатор должен быть уникальным.

Вы должны написать

 id="link<? echo $article['article_id']; ?>" 

так же как

 $('#link<? echo $article["article_id"]; ?>').click(function() {...}) 
 <script language="javascript"> $(document).ready(function() { $(".delbutton").click(function(){ var element = $(this); var del_id = element.attr("id"); var info = 'id=' + del_id; if(confirm("Sure you want to delete this record? There is NO undo!")) { $.ajax({ type: "GET", url: "products/delete_record.php", data: info, cache: false, success: function(){ setTimeout(function() { location.reload(''); }, 1000); } }); $(this).parents(".record").animate({ backgroundColor: "#fbc7c7" }, "fast") .animate({ opacity: "hide" }, "slow"); } return false; //location.reload(); }); }); </script>