用户在单击按钮(删除)时可以选择删除他的帐户——他也必须输入他的密码才能这样做。所以我在上面描述了第一个 ajax 请求。如果用户仍然进行预订(它是一个预订 Web 应用程序)并且他应该重新考虑,则从服务器返回的响应是一个响应 - 出现一条消息。
如果他坚持要删除他的帐户,那么他必须再次单击删除按钮。问题(如果您没有注意到)是通过再次单击删除按钮重复上述过程,而现在的目标 - 在出现警告消息之后 - 是单击删除按钮的意思是“是的,尽管我想要预订删除我的帐户”。
所以,这个删除按钮必须有双重作用,一个在警告出现之前,一个在警告出现之后。在这种情况下我能做什么?我正在考虑实现一个确认框,但以上都发生在一个模态框中。所以一个模态框上的确认框我认为不是正确的解决方案。
这是用户第一次单击删除按钮时发送的 ajax 请求:
$('.deactivate').click(function(){
event.preventDefault();
var trimmeddelpass=$.trim($('input#del_password').val());
if(trimmeddelpass!=="")
{ $.ajax({
type: "POST",
url: "delaccountajax.php",
data: {"delpass":trimmeddelpass},
success:function(data){
if(data==2)
{$('#warning').html('You have still bookings pending');
$('#warning').show();
}
else if(data==3)
{ window.location.href = "../Frontend/login.php";//proceed deleting the account
}
error:function(jxhr){
alert(jxhr.responseText);}
});
}
这是服务器代码:
$output=delete_account($conn,$delpass,$sessionml);
if($output=='2')
{$success='2';}
elseif($output=='3')
{logout();
$success='3';}
echo $success;
上面的两个代码都是简化版本,因为其中也包含了一些其他的东西——尽管我们正在处理的问题不需要它们。
我在实现您提出的代码时遇到问题...这当然是正确的解决方案,但是...看看发生了什么,这是代码:
$('.deactivate').click(function(){
event.preventDefault();
deletestate=0;
if(deletestate==0)
{ $.ajax({
type: "POST",
url: "delaccountajax.php",
data: {"delpass":trimmeddelpass},
success:function(data){
if(data==2)
{$('#warning').html('You have booking pending');
$('#warning').show();
deletestate=1
}....
if(deletestate==1){....}
上面的代码总是将全局 deletestate 设置为 0,稍后将其设置为 1 没有任何效果......我该怎么做?