0

OK、タイトは少し混乱しているように見えるので、もっと徹底的に説明しようとします...

ページが現在実行するプロセスは次の順序に従います。 - ユーザーがボタンをクリック - サーバー側のコードが DB からデータを取得し、非表示フィールドなどを使用してそのデータをクライアントに公開します。- クライアント側のコードは、このデータを使用して、提供されたデータでいくつかのタスクを実行する ActiveX コンポーネントを起動します。

これは問題なく機能しますが、ActiveX コンポーネントは大量のデータを処理するのに適していないため、プロセスを最適化する必要があります。今日行われているように、すべてのデータを一度に送信するのではなく、データをコンポーネントの「ブロック」に送信する必要があります。

ただし、ここで障害にぶつかりました。ページをサーバーからクライアントコードに何度も行き来させるにはどうすればよいですか? のように...「ユーザーがボタンをクリックすると、サーバーがデータの最初のブロックを取得し、クライアントに送信し、クライアントが最初のブロックに対して ActiveX を実行し、クライアントが次のブロックを要求し、サーバーが 2 番目のブロックを取得し、クライアントに送信し、クライアントが 2 番目のブロックに対して ActiveX を実行します。 、クライアントは 3 番目のブロックを要求します... など」? クライアントスクリプトブロックを2回登録できず、AJAXがそれらの複数の連続コールバックを処理することを期待できないため、最初のリクエストを通過できません...

それとも方法はありますか?

4

1 に答える 1

0

これは、何よりもアーキテクチャの問題のように思えます。

ここですべきことは次のとおりです。

1) ユーザーがボタンをクリックします。これは通常の送信ボタンではありません。ローカルの JavaScript を実行する単純なボタンです。

2) ローカル JavaScript が AJAX リクエストを作成して、使用可能なレコード数を決定します。

3) 次に、その JavaScript は、使用可能なレコードの数を、チャンクごとに取得する量で割った値に基づいてループを実行します。

3.a) チャンクの AJAX リクエストを実行する

3.b) データを ActiveX コントロールに投入します。ところで、これを取り除くことを検討することをお勧めします。ActiveX には、面白くないほど多くの問題があります。

4) 完了するまで 3.a と 3.b を繰り返します。

完全なポストバックが実行されたことは一度もありません。また、クライアント スクリプト ブロックを登録する必要がないことにも気付くでしょう。

ここでの欠点は、純粋に ActiveX コントロールにあります。ページ内で JavaScript から複数回インスタンス化できますか、それとも 1 つのインスタンスのみを使用する必要がありますか?

単一のインスタンスに限定されている場合は、まったく別のアプローチが必要になります。

于 2013-07-17T21:37:40.830 に答える