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); 

thisthisその状況では、あなたが期待しているものとは異なることを指します。代わりにこれを試してください:

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

Rory のコメントに従って修正されたパラメーター名を更新します。

于 2012-04-17T19:10:50.253 に答える