0

jquery ajax()について1つ質問があります。テーブルグリッドを作成しましたが、タブキーでセル間をスキップする必要があります。グリッドは、ajaxを2回呼び出す必要があるように構築されています(前のセルを保存し、2番目のセルに入力を表示するため)。私の問題は、誰かがタブを使用してセルを編集しているときに、応答が非常に遅い場合があるということです。通常の応答は約40〜70ミリ秒ですが、同じ場合、応答は1秒より長くなります。これはなぜですか。現在のセルの編集が遅れると、この問題が頻繁に発生するため、サーバーは注意を払っていないようです。編集されたデータの種類などが原因で応答が長くなることはありません。完全にランダムです..この問題を除いてすべてがうまくいくので、グリッドを作り直したくありません...ありがとう!

4

1 に答える 1

1

この問題を解決するための2つの潜在的なアプローチがあります。

  1. モジュール性。可能であれば、グリッドをサンドボックスプロトタイプに分離します。ここでは、エラーを再現するために必要なもの以外は何も実装されていません。コードがモジュール式の場合、これは簡単ですが、そうでない場合は不可能になる可能性があります。

    動作を分離する2つ目の方法は、実際にサーバーから切断することです。これが私が意味することです:単に「モック」オブジェクトを返すようにajaxを変更することが可能です。このようにして、遅延や予期しないデータ型がないことがわかります。この概念は「データモック」と呼ばれ、テスト駆動開発のセットアップに似ています。これにより、リクエストレスポンスコールバックで問題が発生した場合に証明されます。しかし、そうではないと思います。

  2. イベント。何らかの理由で、あなたの説明はイベントに関連しているように聞こえます。グリッドをプロトタイプに分離すると、何かが破壊されている場合、予期せずこれを解決できる可能性があります。したがって、このシナリオでの私のアドバイスは次のとおりです。

    A.エラーケースのクロスブラウザをテストします。イベントは、ブラウザによって動作が異なる場合があります。これにより、根本的な原因のヒントが得られる場合があります。

    B.ステップ-コードをデバッグします。大量のイベントが生成されている場合、または別のハンドラーが発生してはならないときにステップインしている場合、最善の策は、実行時にアクトでそれをキャッチすることです。

    C. Chrome、右クリック、要素の検査、スクリプトタブ、およびブレークポイントの設定は、これを解決するのに役立つ強力なワークフローです。

    D.追加のイベントアクションをハンドラーのDOMスタックに沿ったチェーンから分離するstopPropagation()またはpreventDefault()を必要とするカスタムイベントの一般的なケースがあります。これはあなたに当てはまるかもしれないし、そうでないかもしれません、私がそれを言及する理由は-私が過去にそれに遭遇したとき、それは最初はランダムで再現するのが難しいように見えるからです。MDNに関するこの情報へのリンクは次のとおりです。

お役に立てば幸いです。ナッシュ

于 2012-06-27T15:53:54.003 に答える