【问题标题】:Wont delete via ajax live call不会通过 ajax 实时调用删除
【发布时间】:2014-04-29 12:02:58
【问题描述】:

当我按下删除按钮时,它不会删除内容。 我认为ajax删除调用有问题

ajax-file.php

    $('.delete_update').live("click",function() {

        var ID = $(this).attr("id");
        var dataString = 'msg_id='+ ID;

        if(confirm("Sure you want to delete this update? There is NO undo!")) {

        $.ajax({
            type: "POST",
            url: "delete_data.php",
            data: dataString,
            cache: false,
            success: function(html){
            $("div#bar"+ID).slideUp('slow', function() {$(this).remove();});
        }
    });

    }

return false;
});

<div class="accordionButton" id="bar<?php echo $msg_id; ?>"><?php echo $msg_id; ?>:<?php echo $name; ?>
<a href="#" id="<?php echo $msg_id; ?>" class="delete_update">X</a>
</div>
<div class="accordionContent" style="display: block;"><?php echo $msg; ?></div>

delete_data.php

<?php
include("db.php");
if($_POST['msg_id'])
{
$id=$_POST['msg_id'];
$id = mysql_escape_String($id);
$sql = "delete from messages where msg_id='$id'";
mysql_query( $sql);
}
?>

【问题讨论】:

  • 那么点击事件是否触发?控制台中的任何错误?更好地解释您的问题
  • 用FF/Firebug/Chrome查看Post请求是否发送,判断是js还是php代码有问题。
  • 您是否意识到任何人都可以从您的数据库中删除内容,因为您根本不验证任何输入?此外,当 HTTP 方法中有 DELETE 方法可用时,您不应该使用 POST 删除内容。
  • 它什么都不做。不运行ajax。所以我认为它一定是按钮的东西?
  • 我认为数据传递不正确data: { msg_id: dataString }

标签: php jquery ajax


【解决方案1】:

如果您使用的是最新的 jQuery,请使用 on 而不是 live,因为它不受支持

*针对动态内容进行了更新

$(document).on("click", '.delete_update', function() {

【讨论】:

  • 我使用 jquery-2.0.3.min.js - 我尝试更改它 - 但仍然无法正常工作
  • 我认为是因为我试图删除的内容是通过ajax加载的,所以为什么删除按钮不起作用?
  • 然后使用$(document).on("click", '.delete_update', function() {回答更新
  • 现在 jquery 代码运行 :) 谢谢 - 但它不会删除或获取 ID。 var ID = $(this).attr("id"); var dataString = 'msg_id='+ ID;
  • 它现在工作了 - 我没有连接到 mysql 数据库。谢谢
【解决方案2】:

我认为问题出在这个函数中。 你给 $.ajax 数据对象一个字符串。 该函数“通常”只处理 javascript 对象。

在不检查参数的情况下处理参数时也要小心。 查看为 mysql 准备的语句

    $.ajax({
        type: "POST",
        url: "delete_data.php",
        data: dataString, <--- May be wrong because you are using POST
        cache: false,
        success: function(html){
        $("div#bar"+ID).slideUp('slow', function() {$(this).remove();});
    }

试试这个。尝试在服务端脚本回显 msg_id

    $.ajax({
        type: "POST",
        url: "delete_data.php",
        data: {msg_id:ID},
        cache: false,
        success: function(html){
        $("div#bar"+ID).slideUp('slow', function() {$(this).remove();});
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 2014-12-09
    相关资源
    最近更新 更多