-1

我正在创建一个带有记录和删除按钮的表。每个删除按钮都有一个 id,我按下按钮删除记录。

下面的代码:

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>

删除.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 与我的代码一起工作?

4

1 回答 1

2

作为一个选项,您可以将 Ajax 请求绑定到您的链接,如下所示:

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

在这个匿名函数中,您可以使用任何逻辑而不是alert()来显示记录已被删除(例如删除链接)。或者您可以更改您的 PHP 脚本以返回一些 JSON 答案并使用此函数对其进行解析。由你决定。

当然,您的 sql 查询中存在漏洞,您至少应该使用

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

如果 $_GET['id'] 未设置,这将避免通知并保护您的查询。此外,考虑使用 POST 方法进行删除。

于 2013-07-09T12:51:47.867 回答