2

現在、phpでjqueryを使用して、自分のWebサイトのdivを更新できます。これはある程度うまく機能します。問題は、現在更新されているデータがテーブル全体であるということです。ヘッダーで使用されているコードは次のとおりです。

<!-- DIV REFRESH START -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 
<script> 
var auto_refresh = setInterval(
function()
{
$('#datatable').fadeOut('slow').load('data/table.php').fadeIn("slow");
}, 10000);
</script>
<!-- DIV REFRESH END -->

ご覧のとおり、特定のdivを特定のページで更新しています。この質問で明らかになると確信しているので、私は一般的にjqueryとjavaベースのコーディングに非常に慣れています。

次のことを行うことは可能ですか?

  1. 行数は常に変化するため、テーブルは実際にはphp関数で作成されます。関数を呼び出しているだけのページではなく、関数を具体的に更新することは可能ですか?

  2. 現在、テーブルは完全に更新されています。これは、各行の1つの図を更新するためだけのものです。行の各図のみを更新する方がはるかにクリーンですが、テーブルの柔軟性と関数の一部であるという事実により、これは可能でしょうか?もしそうなら、それはどのように可能でしょうか?各行に各divを設定して、ページ上部のスクリプトセクションで考慮できる一意のdiv名を付けることができますが、同じコードで可能なすべてのdiv名を繰り返す必要はありませんか?

  3. 時間遅延ではなく、データベース内の何かが変更されたときに基づいてアイテムを更新することは可能ですが、上記の要件を考慮すると、最善の方法は何でしょうか。

私はかなり離れている可能性があり、それは各質問への簡単な答えですが、すべての入力に感謝します。

ありがとう!

ps役立つ場合は、現在テーブルを作成するために使用している関数は次のとおりです(よりクリーンに機能させることができることはわかっていますが、少し学習プロジェクトです)。

function portalTable($venueId, $eventId)
{   
    echo "<table class='basic-table'><tr class='th'><th>Portal Name</th><th>Scanned</th></tr>";
    $grandTotals = array();
    $portalSql = mysql_query("SELECT * FROM portal WHERE id_venue = $venueId");
    while ($portalRow = mysql_fetch_array($portalSql))
        {
            $portalId = $portalRow['id_portal'];
            $portalName = $portalRow['name_portal'];
            if($portalId&1) {$gray = "dg";} else {$gray = "lg";}                        
            $sql = mysql_query("SELECT * FROM scan WHERE id_event = $eventId AND id_portal = $portalId");
            while ($row = mysql_fetch_array($sql))
                {
                    $scanTotal = $row['total_scan'];
                    echo "<tr class='$gray'><td>$portalName</td><td>$scanTotal</td></tr>";
                    $grandTotals[] = $scanTotal;
                }
        }
    $totals = array_sum($grandTotals);
    echo "<tr class='basic-table-total'><td>Total</td><td>$totals</td></tr>";

    // total failed scans
    $sql = mysql_query("SELECT total_errors FROM errors WHERE id_event = $eventId");
    while ($row = mysql_fetch_array($sql))
        {
            $totalErrors = $row['total_errors'];
            echo "<tr class='basic-table-total'><th>Total Rejected Scans</th><th>$totalErrors</th></tr>";
        }

    echo "</table>";
}
4

1 に答える 1

2
$('div.myDiv').each(function(i, obj) {
    $(obj).load('myURL.php');
});

それはあなたが探しているものですか?

送信される大量のデータについては?生の HTML を送信しないでください。代わりに、jQuery でparseJSONを使用し、PHP スクリプトでjson_encodeを使用して、(はるかに) 少量のデータをユーザーに送信します。これは、クライアントがテーブルを作成するために使用できます。

デコードされた JSON データの処理は、JavaScript では比較的簡単です。デコードされると、アクセス可能なobject. イテレータを使用できます (jQuery はこれをうまく行います)。

$.each(myJSON, function(i, val) {
    $('body').append(val + "<br />");
});
于 2012-12-31T17:38:38.200 に答える