当我提醒用户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>
答案 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修复。然后返回数据库并验证实际登录的情况。