【问题标题】:database entry delete with ajax not working使用ajax删除数据库条目不起作用
【发布时间】:2018-05-22 23:22:14
【问题描述】:

用户在必须确认退出活动的页面上。 单击“确定”时,应在数据库中删除他的注册条目,然后将其重定向。 这是按钮处理程序的代码:

$("#OK").click(function()
    {
        unsubscribeMember();
         window.location.href="signup-for-event.php?memId=" + <?php echo $_SESSION['memberId'] ?>;
    });

这里是unsubscribeMember()函数的代码;

function unsubscribeMember()
{
    var data = "memId=" + <?php echo $_SESSION['memberId'];?> + "&actID=" + <?php echo $_GET['actID']; ?> ;
    alert(data);

    $.ajax({
        dataType: 'json',
        url: 'json-responses.php?fct=deleteMemberFromActivity',
        data: data,
        cache: false
    });
}

函数被正确调用,警报输出(数据)显示; "memId=1600&actID=302"

json-responses.php 文件包含这些行来调用 dataLayer 文件:

if ($_GET['fct'] == 'deleteMemberFromActivity')
{
    $result = deleteMemberFromActivity($connectionObject, $_GET['actID'], $_GET['memId']);
    echo $result;
}

dataLayer 代码如下所示:

function deleteMemberFromActivity($PDOdbObject, $actId, $memberId)
{
    $deleteSignUpsSQL = "DELETE FROM 'member_activity' WHERE 'activity_id' = ? AND 'member_id' = ?";
    $stmt = $PDOdbObject->prepare($deleteSignUpsSQL);
    $stmt -> execute([$actId, $memberId]);
    $affected_rows = $stmt->rowCount();
    return $affected_rows;
}

但是当用户点击按钮时,重定向工作正常,但数据库中的删除不会发生

【问题讨论】:

  • 在使用 jQuery 发送的数据中使用“memId”,在 PHP 脚本中使用 $_GET['memberId'] .. 另外,我建议在发送时使用 POST 而不是 GET数据。
  • @ARN 刚刚将 memberId 更正为 memId,还是一样。数据库中的数据条目不会被删除
  • @IvanGajic 不,不,不,再一次,不。永远不要async:false
  • @AlleV。我会再说一次,拜托,为了一切圣洁(或不圣洁,如果你愿意)的爱,不要这样做async:false。这将导致负面的用户体验,并且一些浏览器已经开始禁止这个可怕的编程漏洞。

标签: php jquery mysql ajax


【解决方案1】:

您的 AJAX 调用未引用 actID。你唯一通过的是fct=deleteMemberFromActivity。您的服务器不知道您要删除哪个用户。

此外,您应该发布这些值。任何用户都可以看到您正在使用的结构并交换 URL 中的数据以将数据发送到您的服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 2021-10-27
    • 2017-04-04
    相关资源
    最近更新 更多