0

datatableプラグインでサーバー側の並べ替えを行っています。データの読み込みには4〜5秒かかります。その間に、ユーザーが他のヘッダーをクリックすると、AJAX呼び出しが再度トリガーされます。

サーバー側のデータがまだ処理状態にあるときにユーザーを制限するにはどうすればよいですか?カスタムフラグのステータスを確認し、処理が完了するまで並べ替えを停止できる初期機能はありますか?

4

4 に答える 4

2

最初にリクエストを受け取ったら、ボタンを無効にします。次に、サーバーの終了時にトリガーされるコールバック関数のボタンを有効にします。それがあなたのやり方ですが、コードが必要な場合は、コードを与えてください。

于 2010-10-21T10:26:14.897 に答える
1

簡単なヒント:

  • セットするasync: false
  • 並べ替えボタンを無効にする
  • リクエストが成功したら有効にします
于 2010-10-21T10:26:43.213 に答える
0

メモリが正しく機能する場合、jqueryには、、、などajaxStart()の3つの関数がajaxError()ありajaxComplete()ます。

ajaxStartの場合はグリッド全体/グリッドヘッダーのみを無効にし、ajaxError(エラー処理を実行できる場合)またはajaxCompleteの場合は再度有効にします。

于 2010-10-21T10:26:53.333 に答える
-1

これを行うにはさまざまな方法がありますが、最も簡単な方法はコードによって異なります。

$(document).ajaxSend( function(){
   $('controls_selector').hide();
}).ajaxComplete( function(){
   $('controls_selector').show();
});

これはそれを行いますが、これはあなたのページ上のajaxイベントの期間中それらを無効にします。ドキュメントでは、コールバック関数のパラメーターを使用してajax呼び出しの性質を判別し、それらの要素を選択的に表示/非表示にする方法について説明しています。

このようにして、プラグインのコードを掘り下げて操作することを回避できます。

アップデート

こだわりのポイントは、要素を非表示にしたくない、イベントハンドラーを一時的に無効にする方法が必要であり、それらがデータテーブルに埋め込まれているため、変更したくないということです。私は次のことをします:

var tableheadclone = $('#mytableid thead>tr>th').clone(true);

次に、そのクローンを別の場所に書き込み、非表示にします(またはグローバルjs変数に保持します)。その後、使用することができます

$('#mytableid thead>tr>th').unbind('click');

イベントハンドラーを削除します。

replaceWith()jQuery関数を使用してイベントハンドラーを復元できます。

于 2010-10-21T10:28:23.587 に答える