Javascript 側では、イベントリスナーをイベントのテキストに登録しまし<input>
たonkeyup
。
イベントがトリガーされるたびに、入力を URL エンコード変数としてリクエストにxmlhttprequest
渡すオブジェクトを作成する関数が呼び出されます。value
POST
リクエスト ページはaspx
、post 変数を受け取り、それに何らかの処理を行い、処理された入力をパラメーターとして MS SQL クエリに追加するスクリプトです。クエリの実行から生成された結果セットはdataset
、XML に変換された に配置され、XSLT を介して XHTML に変換され、innerHTML
インジェクション メソッドを介して ajax 呼び出しを行ったページに挿入されます。
これまで私をフォローしてきた場合、結果は MS SQL DB での全文検索であり、キー リリースごとに結果が生成されます。また、MS SQL 2005 と IIS6.0 を使用していることにも言及する価値があります。
1 つのテスト ケースを除いて、システムはうまく機能しているようです。501 internal server errors
それは、サーバーが最終的にリクエストごとに返すことができるのと同じくらい速く入力をパウンドするときです。数分後、それ自体が「修正」され、正常に動作するように見えます。これらの内部エラーに関して、IIS から有益な情報を得ることができませんでした。
これは単なる憶測にすぎませんが、私の最初の仮定は、まだ終了していないオープンな同時リクエストが多すぎるか、短期間に行われたリクエストが多すぎるということでした。
私の最初の考えは、これらのキューxmlhttprequests
を作成し、一度に 1 つだけ開くことでした。
ただし、キューではなく、これを試しました:
それぞれonkeyup
:
- によって生成され
abort
た最後の呼び出しxmlhttprequest
onkeyup
xmlhttprequest
このための新規作成onkeyup
この手順により、問題が解消されるようです。
私ができなかったのは、この問題の根本原因を特定することでした: サーバーの制限ですか? それともブラウザの制限ですか?この中断手順を必要とせずに、この問題を解決する他の方法はありますか?
必要に応じてコードを投稿できますが、コードは非常に長く、このプロジェクトでは多くのテクノロジが使用されているため、この質問に答えるのに本当に役立つかどうかはわかりません.