私は完全なプログラミング初心者で、メイン ページの既存のテーブル構造に AJAX データを適切に取り込もうとして、テーブルの個別の Javascript 機能 (並べ替え、フィルタリングなど) を失うことなく問題を抱えています。
この Web サイトで、私が達成しようとしていることに近いが、探している正確な解決策を提供していない同様の質問を見てきました。
指定されたデータベース テーブルの変更を監視し、別のファイル table.php の php スクリプトを介してメイン ページの div タグ ('object_area') への変更を表示する Ajax スクリプトがあります。この AJAX スクリプトは完全に機能します。
ajax スクリプトは次のとおりです。
// AJAX REQUEST
function httpRequest(){
var httpRequest = null;
try { httpRequest = new XMLHttpRequest(); }
catch(e){
try{httpRequest = new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){httpRequest = new ActiveXObject("Microsoft.XMLHTTP");}
}
return httpRequest;
}
var t;
function load_data(){
var http_request = httpRequest();
var object_area = document.getElementById('object_area');
var url = "table.php";
http_request.open("GET", url, true);
http_request.onreadystatechange = function(){
if(http_request.readyState == 4){
object_area.innerHTML = http_request.responseText;
}
}
http_request.send(null);
t = setTimeout(load_data, 1000);
}
document.onload = load_data();
以下は、メイン ページの div タグに表示される table.php からの関連コードです。
$result = mysql_query("SELECT * FROM Encounters WHERE encounterdate ='$mydate' && encounterstatus = 'pending'");
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['encounterstatus'] . "</td>";
echo "<td>" . $row['encountertime'] . "</td>";
echo "<td>" . $row['patientfirstname'] . "</td>";
echo "<td>" . $row['patientlastname'] . "</td>";
echo "<td>" . $row['patientdob'] . "</td>";
echo "<td>" . $row['encounterprovider'] . "</td>";
echo "<td>" . $row['encountertype'] . "</td>";
echo "<td>" . $row['encounterreason'] . "</td>";
echo "<td>" . $row['primaryinsurancecompany'] . "</td>";
echo "<td>" . $row['secondaryinsurancecompany'] . "</td>";
echo "<td>" . $row['primaryinsuranceplanrules'] . "</td>";
echo "<td>" . $row['copay1'] . "</td>";
echo "<td>" . $row['deductible1'] . "</td>";
echo "<td>" . $row['deductibleremaining1'] . "</td>";
echo "<td>" . $row['coinsurance1'] . "</td>";
echo "<td>" . $row['hrabalance'] . "</td>";
echo "<td>" . $row['oopremaining'] . "</td>";
echo "</tr>";
}
メイン ページのテーブル コードは次のとおりです (table.php のものと同様)。しかし、それはすべてのjs機能を備えています。
別の機能に影響を与えることなく、AJAX データをこのテーブルに表示したいと考えています。
これは、php を使用して行ごとにデータを取得し、テーブルに表示するメイン ページのテーブルのコードです (これは AJAX によるものではないことに注意してください。これは単なる標準テーブルです)。
<table cellpadding="0" cellspacing="0" border="0" id="table" class="tinytable">
<thead>
<tr>
<th><h3>Status</h3></th>
<th><h3>Time</h3></th>
<th><h3>First Name</h3></th>
<th><h3>Last Name</h3></th>
<th><h3>DOB</h3></th>
<th><h3>Provider</h3></th>
<th><h3>Visit Type</h3></th>
<th><h3>Visit Reason</h3></th>
<th><h3>Primary Insurance</h3></th>
<th><h3>Secondary Insurance</h3></th>
<th><h3>Policy Rules</h3></th>
<th><h3>Visit Copay</h3></th>
<th><h3>Deductible</h3></th>
<th><h3>Deductible Remaining</h3></th>
<th><h3>CI%</h3></th>
<th><h3>HRA</h3></th>
<th><h3>OOP</h3></th>
</tr>
</thead>
<tbody>
<?php
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['encounterstatus'] . "</td>";
echo "<td>" . $row['encountertime'] . "</td>";
echo "<td>" . $row['patientfirstname'] . "</td>";
echo "<td>" . $row['patientlastname'] . "</td>";
echo "<td>" . $row['patientdob'] . "</td>";
echo "<td>" . $row['encounterprovider'] . "</td>";
echo "<td>" . $row['encountertype'] . "</td>";
echo "<td>" . $row['encounterreason'] . "</td>";
echo "<td>" . $row['primaryinsurancecompany'] . "</td>";
echo "<td>" . $row['secondaryinsurancecompany'] . "</td>";
echo "<td>" . $row['primaryinsuranceplanrules'] . "</td>";
echo "<td>" . $row['copay1'] . "</td>";
echo "<td>" . $row['deductible1'] . "</td>";
echo "<td>" . $row['deductibleremaining1'] . "</td>";
echo "<td>" . $row['coinsurance1'] . "</td>";
echo "<td>" . $row['hrabalance'] . "</td>";
echo "<td>" . $row['oopremaining'] . "</td>";
echo "</tr>";
}
?>
</tbody>
</table>
前述のように、このテーブルは別の Javascript ファイル (ここには示されていません) によって機能を取得し、ソート、フィルタリングなどの機能を提供します。
PHP の「while ループ」コードをテーブル本体セクションの div 'object_area' に置き換えるだけで、テーブルの個別のスクリプト (並べ替え、フィルタリングなど) 機能が失われますが、データ自体はテーブル形式で表示されます。 table.php のおかげで、AJAX スクリプトを介して正しく更新されます。このシナリオでは、メイン ページの「テーブル」が実際には 2 つの別々の部分から派生していることを考えると、機能の喪失は理にかなっています。
以下の方法で div をメイン ページ テーブルのテーブル セルに直接配置しようとすると、もちろんすべてのデータが最初のセルに配置されます。
<?php
echo "<tr>";
echo "<td>";
?>
<div id = "object_area"></div>
<?php
echo "</td>";
echo "</tr>";
?>
また、テーブル全体 (js 機能とすべて) を table.php に入れて、メイン ページの I フレームに表示しようとしました。これもうまくいきません。
テーブル構造に基づいて、AJAX データをメイン ページのテーブルの特定のセルごとに行ごとに解析し、テーブル全体の個別の機能に影響を与えずにテーブル本体セクションに表示する方法はありますか? (おそらくこれを行うためのより良い方法があり、間違った方法でこれを行っているのでしょうか?)。