3

因此,我正在尝试使用数组来学习 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();

?>
4

2 回答 2

2

您的代码应如下所示:

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复数形式的参数。

于 2012-04-17T19:15:38.673 回答
1

这里:

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

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

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

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

于 2012-04-17T19:10:50.253 回答