单击后清除变量

时间:2014-06-26 14:48:50

标签: javascript php jquery

我有以下代码,而且我无法清除导致我网站上出现错误的一个变量。

以下代码会阻止和取消阻止用户。因此在If语句中检查用户是否被阻止。所以它始终为0或1.事情是,在第一次加载if语句中的值保持不变之后,我必须刷新页面以便值可以更改。

关于如何解决这个问题的任何想法?

$('#confirmBlockUser<?php echo $otherConversation->getId(); ?>').on('click', function(e) {
    e.preventDefault();
    if (<?php echo $otherConversation->isUserBlocked($conUser->getId(), UserSession::getUserId()); ?>) {
        $.post( "/conversation/unblock", { usrId: '<?php echo $conUser->getId(); ?>' })
            .done(function (data) {
                $( ".<?php echo $otherConversation->getId().'-con' ?> span.blocked").hide();
        });

     } else {

        $.post( "/conversation/block", { usrId: '<?php echo $conUser->getId(); ?>' })
             .done(function (data) {
                 $( ".<?php echo $otherConversation->getId().'-con' ?> span.blocked").show();
             });

      }
 });

3 个答案:

答案 0 :(得分:3)

使用php输出添加值,因此在从服务器发送页面后它保持不变。 PHP是服务器端!

你需要JavaScript来实现这一目标。

所以也许:

var blocked = <?php echo $otherConversation->isUserBlocked($conUser->getId(), UserSession::getUserId()); ?>;
...
if (blocked) {
  ...
  // unblock in ajax success function or on another condition
  blocked = false;
} else {
  ...
  // block again, because some condition is met
  blocked = true;
}

答案 1 :(得分:1)

您正在接受来自php的'if'语句的测试,该语句只会在页面加载或进行AJAX调用时更改。你需要通过AJAX将php变量设置为javascript变量,然后在你的函数中测试该变量。

$('#confirmBlockUser<?php echo $otherConversation->getId(); ?>').on('click',function(e){
e.preventDefault();

$.post('MYBLOCKEDTEST.php',function(RETURN){
    var blocked = RETURN;
    if (<?php echo $otherConversation->isUserBlocked($conUser->getId(), UserSession::getUserId()); ?>) {
    $.post( "/conversation/unblock", { usrId: '<?php echo $conUser->getId(); ?>' })
        .done(function (data) {
            $( ".<?php echo $otherConversation->getId().'-con' ?> span.blocked").hide();
    });

    } else {

    $.post( "/conversation/block", { usrId: '<?php echo $conUser->getId(); ?>' })
         .done(function (data) {
             $( ".<?php echo $otherConversation->getId().'-con' ?> span.blocked").show();
         });

  }
});

});

答案 2 :(得分:0)

谢谢大家,是的,完全愚蠢,你们是对的,这将永远不会奏效。我必须刷新页面-_-

所以我做了,在js的末尾我添加了重新加载。

$('#confirmBlockUser<?php echo $otherConversation->getId(); ?>').on('click', function(e) {
e.preventDefault();
if (<?php echo $otherConversation->isUserBlocked($conUser->getId(), UserSession::getUserId()); ?>) {
    $.post( "/conversation/unblock", { usrId: '<?php echo $conUser->getId(); ?>' })
        .done(function (data) {
            $( ".<?php echo $otherConversation->getId().'-con' ?> span.blocked").hide();
    });

 } else {

    $.post( "/conversation/block", { usrId: '<?php echo $conUser->getId(); ?>' })
         .done(function (data) {
             $( ".<?php echo $otherConversation->getId().'-con' ?> span.blocked").show();
         });

  }

location.reload();

});