【问题标题】:How to delete record using ajax?如何使用ajax删除记录?
【发布时间】:2013-10-27 01:59:16
【问题描述】:

我正在尝试使用 AJAX 从数据库中删除记录。确认窗口不会出现,因此可以删除记录。这是代码..

<?php
$q = $_GET['q'];
$p = $_GET['p'];
$sql="SELECT * FROM course_details WHERE sem='" . $q . "' AND branch='" . $p . "' ORDER BY course_codes ASC";
$result = mysql_query($sql);        
while($row = mysql_fetch_assoc($result)){
  echo '<tr class="record">';
  echo "<td>" . $row['course_codes'] . "</td>";
  echo "<td>" . $row['course_names'] . "</td>";
  echo "<td>" . $row['course_instructors'] . "</td>";
  echo "<td>" . $row['course_credits'] . "</td>";
  echo '<td><div align="center"><a href="#" id="' . $row['course_id'] . '" class="delbutton" title="Click To Delete">delete</a></div></td>';
  echo '</tr>';
}
echo "</table>";
mysql_close($bd);
?>

这里的 $p 和 $q 是由另一个页面的 AJAX 脚本发送的。它工作正常。记录按预期显示。如果我不使用 AJAX 显示记录,则使用 AJAX 进行删除。我用来删除的脚本是:

<script src="jquery.js"></script>
<script type="text/javascript">
$(function() {
$(".delbutton").click(function(){
var element = $(this);
var del_id = element.attr("id");
var info = 'id=' + del_id;
if(confirm("Are you sure you want to delete this Record?")){
    $.ajax({
        type: "GET",
        url: "deleteCourse.php",
        data: info,
        success: function(){   
    }
});
    $(this).parents(".record").animate({ backgroundColor: "#fbc7c7" }, "fast")
    .animate({ opacity: "hide" }, "slow");
}
return false;
});
});
</script>

删除课程.php

if($_GET['id']){
    $id=$_GET['id'];
    $id = mysql_escape_string($id);
}
$del = "DELETE from course_details where course_id = '$id'";

$result = mysql_query($del);

【问题讨论】:

  • 似乎每天我们都肩负着指导新开发人员逃避和验证用户输入的职责。
  • @Jazza:这不是他问的...
  • @Jahaan - “如果我不使用 AJAX 来显示记录,则使用 AJAX 进行删除”,不幸的是你没有只显示这段代码。
  • @Lame-up-duck - 但@Jazza 仍然是对的。而且mysql接口的使用早就被弃用了,应该换成PDO,或者至少mysqli...
  • @Lame-up-duck:请不要生气...他可能会被这样的问题困扰。事实是,没有您的帮助,我们新开发人员无法继续......所以请坚持下去

标签: javascript php jquery mysql ajax


【解决方案1】:

问题是因为您正在创建动态元素,因此您必须使用 delagate $(document).on() 才能将点击事件绑定到元素。 这是更正后的代码

<script type="text/javascript">
        $(function() {
        $(document).on('click','.delbutton',function(){
        var element = $(this);
        var del_id = element.attr("id");
        var info = 'id=' + del_id;
        if(confirm("Are you sure you want to delete this Record?")){
            $.ajax({
                type: "GET",
                url: "deleteCourse.php",
                data: info,
                success: function(){  } 
            });
        }
        return false;
        });
        });
    </script>

还有你的deletCourse.php

if($_GET['id']){
    $id=$_GET['id'];
    $id = mysql_escape_string($id);
}
$del = "DELETE from course_details where course_id = ".$id."";

$result = mysql_query($del);

希望对你有帮助,谢谢

【讨论】:

  • @Jahaan 是显示的确认框
  • :不……这就是问题
  • @Jahaan,我已经更新了代码,如果它不起作用,请彻底删除 done() 并检查
  • @Jahaan jus 检查 ajax 调用是否正在工作,正在删除 ajax 调用后的动画,现在检查此代码
【解决方案2】:

试试这个

 <script src="http://code.jquery.com/jquery-1.9.1.js"></script>

 <a href="#" id="1" onclick="del(this.id);return false;">delete</a>
 <a href="#" id="2" onclick="del(this.id);return false;">delete</a>
 <a href="#" id="3" onclick="del(this.id);return false;">delete</a>
 <a href="#" id="4" onclick="del(this.id);return false;">delete</a>
 <a href="#" id="5" onclick="del(this.id);return false;">delete</a>

javascript

function del(id)
{
 var info = 'id=' + id;
    if(confirm("Are you sure you want to delete this Record?")){
        var html = $.ajax({
        type: "POST",
        url: "delete.php",
        data: info,
        async: false
        }).responseText;

        if(html == "success")
        {
            $("#delete").html("delete success.");
            return true;

        }
        else
        {
            $("#captchaStatus").html("incorrect. Please try again");

            return false;
        }
    }
}

ajax 文件

if($_GET['id']){
$id=$_GET['id'];
$id = mysql_escape_string($id);
}
$del = "DELETE from course_details where course_id = '$id'";
$result = mysql_query($del);
if($result)
{
echo "success";
}

【讨论】:

  • 没有出现确认框,也没有删除数据.....显示没有错误
  • @Arun Kumar:这个也不起作用..我使用的 ajax 代码很好..我在项目的不同位置使用相同的代码。但在这里它不起作用。 .原因是在得到ajax发送的id后使用php填充数据...你请看链接..stackoverflow.com/questions/19434125/…
【解决方案3】:

试试这个:

<script type="text/javascript" src="jquery.js"></script>

【讨论】:

  • @user2169355:如果我只使用 php 而不是使用 AJAX 从数据库中检索数据,我发布的脚本可以正常工作
【解决方案4】:
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
function del(id)
{

 var info = 'id=' + id;
    if(confirm("Are you sure you want to delete this Record?")){
        var html = $.ajax({
        type: "GET",
        url: "deletCourse.php",
        data: info,
        async: false ,
         success: function() {
    window.location.reload(true);}
        }).responseText;


    }
}
</script>

<?php
$link=mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("cart");
$sql=mysql_query("SELECT * FROM `details`");
echo "<table>";
echo "<tr><th>Name</th><th>NO of Items</th></tr>";
while($row = mysql_fetch_assoc($sql)){
  echo '<tr class="record">';
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['num'] . "</td>";

  echo '<td><div align="center"><a href="#"  id="' . $row['id'] . '" onclick="del('.$row['id'].')">delete</a></div></td>';
  echo '</tr>';
}
echo "</table>";
mysql_close($link);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多