1

株価を表示する表がありますが、ユーザーがページを更新しなくても、ページの株価を自動的に更新したいと思います。私はこれを試しました

$(document).ready(function(){
    var updater = setTimeout(function(){
        $('.table #price').load('index.php', 'update=true');
    },6);
});

これは機能しているように見えますが、テーブル全体がセルに配置されます。価格セルを更新したいだけです。私はJavaScriptを初めて使用するので、助けていただければ幸いです。他のファイルもここに投稿しています。

これはportfolio.phpです

<table class="table table-hover center-table table-bordered">
        <tr>
        <th>Symbol</th>
        <th>Name</th>
        <th>Shares</th>
        <th>Price</th>
        <th>Total</th>
        </tr>
<?php foreach ($shares as $row): ?>

        <tr>
        <td><?= $row["symbol"]?></td>
        <td><?= $row["name"]?></td>
        <td><?= $row["shares"]?></td>
        <td id="price">$<?= number_format($row["price"],2)?></td>
        <td>$<?= number_format($row["total"],2)?></td>
        </tr>

<? endforeach ?>

<tr>
    <td>CASH</td>
    <td></td>
    <td></td>
    <td></td>
    <td>$<?= number_format($cash[0]["cash"], 2)?></td>

</tr>

</table>

<script type="text/javascript" src="js/update.js" ></script>

これはindex.phpです

<?php

// configuration
require("../includes/config.php"); 

//query user's portfolio

$rows = query("SELECT * FROM shares WHERE id = ?", $_SESSION["id"]);
$cash = query("SELECT cash FROM users WHERE id = ?", $_SESSION["id"]);

    //create array to store the shares
    $shares = [];

    //for each of the user info

    foreach($rows as $row){

        //lookup stock info
        $stock = lookup($row["symbol"]);
        if($stock !== false){

            $shares[] = [
                "name" => $stock["name"],
                "price" => $stock["price"],
                "shares" => $row["shares"],
                "symbol" => $row["symbol"],
                "total" => $row["shares"]*$stock["price"]

            ];

        }
    }

// render portfolio
render("portfolio.php", ["shares" => $shares,"cash" => $cash, "title" => "Portfolio"] );   
?>
4

2 に答える 2

1

あなたのjavascriptはindex.phpの結果全体をセルに入れますが、それはあなたが望むものではありません。セルに表示したいデータのみをエコーするように、phpページを変更する必要があります。

そのような何かがトリックを行う必要があります(必要に応じて変更してください):

// ...code to calculate $price...
if (isset($_GET['update'])){
    echo $price;
    exit();
}

PS:別のPHPページを使用して$ priceを返すこともできます。これは、価格を更新するたびにindex.phpを呼び出すよりも優れている場合があります。

于 2013-03-26T16:55:50.577 に答える
1

Jqueryでは、AJAXに特定のdivの値のみを返すように要求できます

$(document).ready(function(){
    var updater = setTimeout(function(){
        $('.table #price').load('index.php #price', 'update=true');
    },6);
});

注:上記のコードでは、update =trueパラメーターを指定したindex.phpにも同じインデックスページがあり、価格が更新されていると想定しています。

于 2013-03-26T17:46:32.243 に答える