ボタンが押されたときにいくつかの情報を処理するPHPページがあります。この情報の1つは、クエリを処理することです。次に、クエリの結果を別のページのテーブルに配置します。クエリ結果をテーブルに入れる方法は知っていますが、別のページのテーブルに行ごとに渡す方法がわかりません。誰かが私を助けたり、正しい方向に向けたりできますか?
1 に答える
私がこれを正しく理解していれば、これにはAJAX(および必要に応じてJavaScript)が必要になります。実行したいのは、生成関数を呼び出して、解析可能な形式(JSON、XML、名前を付ける)を返すようにすることです。
そこから、JavaScriptのDOM操作関数を使用してテーブルに追加します。
生成部分
次のように配列形式でデータを取得していると仮定します。
$row = array('column 1','column2');
このような行が大量に発生するか、1つだけになります。書き直さなくても両方のケースを処理するスクリプトを作成します。行を取得するたびに、それを非連想配列に追加し、$RowArrayと呼びます。したがって、すべての行で、を呼び出すことになります$RowArray[] = $row;
。
これで、PHP側はほぼ完成しました。今必要なのは、それをクライアントにエコーバックすることだけです。これ以外は何もエコーしないようにしてください:echo json_encode($RowArray);
。これにより、配列が完全なJSONオブジェクトになるようにフォーマットおよびシリアル化されます。
JavaScript側
簡単にするためにjQueryを想定します。目的は、JSONオブジェクトを読み取り、テーブルに行を追加することです。テーブルのIDは#MyTableであると想定します。
AJAX呼び出しは次のように実行されます。
$.ajax({
url: "your_url.php",
dataType: "json",
type: "post",
success: function(d) {
// Your code here
}
});
success
オブジェクトが正常に解析されるとハンドラーがトリガーされ、変数がd
オブジェクトになります。このオブジェクトは、各要素がオブジェクトであるJavaScript配列になります。ここで行う必要があるのは、ループしてd
エントリごとに行を作成することだけです。
success: function(d) {
for(var i=0; i < d.length; i++) {
var newRow = $("<tr></tr");
for (var k in d[i]) {
newRow.append($("<td></td>").text(d[i][k]));
}
newRow.appendTo($("#MyTable"));
}
}
出来上がり、6行の動的AJAX化テーブル!