2013-07-09 4 views
-1

Я создаю таблицу с записью и кнопкой удаления. Каждая кнопка удаления имеет идентификатор, и я нажимаю кнопку, чтобы удалить запись.JQuery Ajax/PHP GET on Anchor

код ниже:

echo '<a class="delete" href="delete.php?id='.$id.'">Delete</a></td>'; 

выход HTML:

<a class="delete" href="delete.php?id=1">Delete</a> 
<a class="delete" href="delete.php?id=2">Delete</a> 
<a class="delete" href="delete.php?id=3">Delete</a> 
<a class="delete" href="delete.php?id=4">Delete</a> 

Delete.php:

<?php 

$id = $_GET['id']; 

if(isset($_GET['messageid'])) 
{ 

$con=mysqli_connect("localhost","root","","mydb"); 

// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

mysqli_query($con,"DELETE from table WHERE id='$id'"); 

mysqli_close($con); 


} 

?> 

Код выше работает как задумано, но я не хочу иметь перейдите на другую страницу, чтобы я думал о JQuery Ajax. Я знаю, как использовать jquery ajax для форм, но это не так. Как я могу заставить JQuery Ajax работать с моим кодом?

+0

Вы не должны использовать 'GET' для выполнения операции удаления - используйте' POST' как минимум (хотя вы не достигнете этого с помощью простого href, конечно). – moonwave99

ответ

2

Ну как вариант можно связать Ajax запросы на ваши ссылки, как это:

<script> 
$(function(){ 
    $('a.delete').click(function(){ 
     $.get(
      $(this).attr('href'), 
      {}, 
      function(data) { 
       alert('Deleted'); 
      }, 
      'html' 
     ); 
     return false; 
    }); 
}); 
</script> 

Внутри этой анонимной функции вы можете использовать любую логику вместо предупреждения(), чтобы показать, что запись была удалена (удалите ссылку, например). Или вы можете изменить свой PHP-скрипт, чтобы вернуть ответ JSON и проанализировать его с помощью этой функции. Тебе решать.

И, конечно, у вас есть уязвимость в вашем SQL запросе, вы должны по крайней мере использовать

$id = isset($_GET['id']) ? (int) $_GET['id'] : null; 
if ($id) { 

Это позволит избежать уведомления, если $ _GET [ «ID»] не установлен и обезопасит ваш запрос. Кроме того, рассмотрите метод POST для удаления.