【问题标题】:AJAX variable isn't passing through to the if statementAJAX 变量没有传递给 if 语句
【发布时间】:2014-04-01 23:33:32
【问题描述】:

当我提醒用户 ID 时,我会从 else 语句中得到正确的号码。 if 语句根本不会发出警报。所以我认为我放在那里的条件有问题。

奇怪的是,即使 else 语句,我的 div 也不会改变颜色,但它确实会正确提醒,所以我很困惑。

AJAX 函数

$.ajax({
   url: 'status.php',
   dataType: "json",
   type: 'GET',
   success: function(data) {
       if (data.message === "online"){
           $('.status #user'+data.userId).css({background: '#40A547'});  
       } else{ 
            //alert(data.userId);
           $('.status #user'+data.userId).css({background: '#7f8c8d'});
       }
   }
});

status.php

header('Content-Type: application/json');
$array = array();

if (logged_in() === true){
    $res8 = mysql_query("SELECT * FROM `users` LIMIT 1");
    if(mysql_num_rows($res8) > 0){
        while($row8 = mysql_fetch_assoc($res8)){
            if ($row8['status'] === "1") {                  
                $array['message'] = 'online';
                $array['userId'] = $row8['user_id'];
            }
        }
    }
}


 else {  
   $array['message'] = 'offline'; 
   $array['userId'] = '2'; // just for testing
}

    echo json_encode($array);

div

<div class="status" id="user2">test</div>

【问题讨论】:

  • 您在哪里以及如何使用logged_in() 函数?您的问题/代码中没有其他引用它。
  • 这只是一个执行此操作的函数: return (isset($_SESSION['user_id'])) ?真:假;
  • 在条件之前提醒data.message。你得到什么输出?
  • 我收到“离线”警报
  • @Gadgetster 你是否包含了logged_in() 函数声明的文件?也可以var_dump(logged_in()) 告诉我们输出结果。

标签: php jquery ajax


【解决方案1】:

这是错误的:

$('.status #user'+data.userId)
----------^ <--- See space

.status 中没有子节点

试试这个:

$('#user'+data.userId)

还删除了 .status 选择器,因为 ID 是特定的。

【讨论】:

  • 或者更好的是,从选择器中删除 .status,因为 ID 部分足够具体。
  • @PeterHerdenborg 已更新。
  • 成功了! .status 有一个我给它的总体布局。另外,在第一次检查之前,帖子必须有颜色,对吗?另外,我现在如何修复登录时的 if 语句?
【解决方案2】:

我的猜测是这个区块

if ($row8['status'] === "1") {                  
    $array['message'] = 'online';
    $array['userId'] = $row8['user_id'];
} 

永远不会触发。从数据库返回的 $row8['status'] 始终为 0。除非数据库一起失败,否则将消息设置为脱机的后备语句不会触发。

你应该运行这个 PHP 测试用例:

header('Content-Type: application/json');
$array = array();

$array['message'] = 'online'; 
$array['userId'] = '2'; // just for testing

并确认上面的 JQuery 修复。然后返回数据库,验证实际记录的情况。

【讨论】:

  • 是的,我也想这样做。感谢您的意见!
猜你喜欢
  • 2011-08-31
  • 2017-08-10
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2013-05-09
  • 1970-01-01
  • 2015-10-06
相关资源
最近更新 更多