私はこのトピックに関する多くの情報があると言って始めますが、更新しようとするとベストプラクティスとみなされるものを明確にするための確かな答えは見つけられませんAjaxコール後のテーブル。jQueryを使ってajaxの後にテーブルを更新する
私は、ユーザーが日付範囲を選択してajax呼び出しを生成した後、新しいデータで更新したいHTMLテーブルを持っています。 範囲が選択された後、AJAX呼び出しが新しいテーブルを作成し、私はこのようなDOMの更新:
$(document).ready(function(){
$('#selecDate').on('DOMSubtreeModified',function(){
range = getRange() ;
$.ajax({
type: 'POST',
url: '/revenue',
data: {'start' : range[0], 'end' : range[1]},
dataType: 'json',
success: function(response){
updateTable(response);
},
error: function(response){
console.log('error:' + response);
},
});
});
});
updateTable(response)
- レスポンスを受け付けた場合に呼び出されてい関数: 関数updateTable(応答){
var table = '<table class="table table-bordered data-table sortable" id="rev-table"><thead>';
table += '<tr><th colspan="10">Income</th><th colspan="9">Spent</th>';
table += '<tr><th>Website Name</th><th>Google</th>...LOTS OF LINES
var total_spent= response[website]['total_spent'];...LOTS OF LINES
table += '<tr><td>' + website + '</td>';
table += '</tr>';
}
table += '</tbody></table>';
$('#rev-table-cont').html(table);
を
それは長いテーブルなので、大きな部分を切り詰めましたが、あなたは考えを持っていると思います... 私はどこにでもたくさんの書いたが、彼らはすべて同じことをしている。私はこのコードを使用してテーブルを並べ替えることができるように使用:
$(document).ready(function(){
$('#rev-table').DataTable({
"bJQueryUI": true,
"processing": true,
"sPaginationType": "full_numbers",
"sDom": '<""l>t<"F"fp>'
});
$('select').select2();
$('.active').removeClass("active");
$('#revenueReport').addClass("active");
});
しかし、今はもう、このライン
$('#rev-table-cont').html(table);
表がソート可能でないとDOMを新しいテーブルを作成し、更新した後コードは効果がなく、コンソールにエラーはありません。 私はこのリンクのようなすべてのトピックに関するいくつかのリードを見つけました: https://datatables.net/reference/api/ajax.reload()、または多くの質問がここにありますが、私はこの問題を解決すべきかについて明確な答えを得ることができません。ベストプラクティスと考えているか、別の方法がありますか? ajax呼び出しの後にテーブルがもうソートできないのはなぜですか? 任意のリードは非常に役に立つでしょう... thx!
AJAX機能(サーバ側)自体のリターン/出力としてテーブル構造を生成し、データだけではJavaScript機能を使用する準備ができたときにそれを表示するには良いでしょう。 – Debashis
@Debashis実際、私は正反対の真実だと思っています。そして、ほとんどのWebベースのソフトウェアアーキテクチャの構造がこれを裏づけるようになりました。良い例は、サーバー側がある種のAPIである場合です。データ自体にのみ関係する必要があります。どのようにデータが提示されるかは、クライアント側の責任です。単一のアプリケーション内であっても、複数の場所で同じ(ajax)データソースを再利用することができます。複数の場所で同じプレゼンテーションを使用する場合は、再利用可能なクライアント側コンポーネントを作成します。 – ADyson