【发布时间】: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。这将导致负面的用户体验,并且一些浏览器已经开始禁止这个可怕的编程漏洞。