1

私は Ajax/Json を初めて使用するので、少なくとも以下がベスト プラクティスに近いかどうかを知りたいです。目標は、テーブルの特定の列 (この場合は数量と価格) を x 秒ごとに更新することです。

次のように定義された HTML テーブルを取得しました。

<table id="#edition_table>
    <tbody>
    <tr>
        <td class="name"><a href="?card=12345">Lightning Bolt</a></td>
        [...]
        <td class="qty">2</td>
        <td class="price">$4.99</td>
    <tr>
    <tr>
        <td class="name"><a href="?card=23456">Fireball</a></td>
        [...]
        <td class="qty">0</td>
        <td class="price">$0.07</td>
    <tr>
    [...]
    </tbody>
</table>

そして、次のように定義された JS 関数:

function edition_update(edition)
{
    var table_rows = $('#edition_table').find('tbody tr td.name a');

    $.ajax({
    type: 'GET', url: 'ajax_edition_update.php', data: { edition : edition }, dataType: 'json',
    success: function(json_rows)
    {
          var new_qty, new_price;

          table_rows.each(function(index) {
                var td_id = $(this).attr('href').replace('?card=', '');

                for (i in json_rows) {
                    if (json_rows[i].card_id == td_id)
                    {
                        new_qty = json_rows[i].qty;
                        new_price = json_rows[i].low_price;
                        break;
                    }
                }

                var parent_tr = $(this).parent().parent();

                parent_tr.find('td.qty').text(new_qty);
                parent_tr.find('td.price').text(!isNaN(new_price) ? '$' + new_price : new_price);
          });
    }
    });

    setTimeout(edition_update, 30000, edition);
}

PHP ファイルは、card_id、qty、および low_price を含む JSON を返します。

これはうまくいきます。class=name td にa を設定しdata-id=[card_id]て .replace を取り除くことができると思いますが、id が既に存在するため、html のフットプリントが少し大きくなります。

本当の問題は、パフォーマンスの改善 (特に 2 つのループに関して) が可能かどうか、または必要かどうかです。テーブルあたりの目標行数は約 500 であり、コンテンツと順序はもちろん完全に動的/予測不可能です。

4

0 に答える 0