使用Jquery,AJAX,PHP和Arrays进行实时更新


Realtime Update with Jquery, AJAX,PHP & Arrays

所以,我正在尝试学习Jquery/AJAX,使用数组在单个函数中的不同元素上执行和更新代码。

下面,我正在尝试使用登录网站的人数和流通中的总货币来更新 DIV。脚本将每隔几秒钟更新一次。

谁能帮我纠正我的语法,或者至少告诉我我在这里做错了什么?

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="../jquery.js"></script>
<script type="text/javascript">
function updateStats(stat)
{
    var stat = ["online","money"];
    var url = "online.php";
    $.each(stat,function(){
    $.post(url,{stat: stat} , function(data) {
        $("#" + this).html(data);       
    })
    })  
} 
setInterval('updateStats("updateStats")', 2000);
</script>

<body onLoad="updateStats(stats);">
<div id="online"></div>
<div id="money"></div>
</body>
</html>

<?php
if($_POST['stats']=='online')
{
    $result= $mysqli->query("SELECT loggedin FROM accounts WHERE loggedin !=0");
    echo $result->num_rows; 
} 
elseif($_POST['stats'] == 'money')
{
$result = $mysqli->query("SELECT sum(money) AS totalMoney FROM users");
$getData = $result->fetch_assoc();
echo number_format($getData['totalMoney']);
}
$mysqli->close();
?>

您的代码应如下所示:

function updateStats(stat)
{
    var stat = ["online","money"];
    var url = "online.php";
    $.each(stat, function(i, key){
       $.post(url, {stats: key}, function(data) {
          $("#" + key).html(data);       
       });
    });
} 

另请注意复数的stats参数。

在这里:

$("#" + this).html(data); 

在这种情况下,this指的是与您期望的不同this。试试这个:

$.each(stat,function(i,str){
    $.post(url,{stats: str} , function(data) {
        $("#" + str).html(data);       
    });
});

根据罗里的评论更新固定的参数名称。