AJAX变量没有传递给if语句

时间:2014-04-01 23:33:32

标签: php jquery ajax

当我提醒用户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>

2 个答案:

答案 0 :(得分:1)

这是错误的:

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

.status

中没有子节点

而是试试这个:

$('#user'+data.userId)

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

答案 1 :(得分:1)

我猜是这个块

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

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

您应该运行此PHP测试用例:

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

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

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