1

にJSのエラーがスローされますjQueryのオートコンプリートは、私たちは、jQueryのUIオートコンプリートv1.8.14と結合されたテキストボックスを持っているIE7のスタンドアロン

それは基本的に素晴らしい作品とIE7のスタンドアロンでの特定のシナリオを除き、バグなし。ユーザーが文字を入力していて、最初のAJAX要求がオートコンプリート結果のために外に出たとしましょう。応答はまだ戻っていませんが、ユーザーは別の手紙を入力します。この時点で、最初のリクエストはデフォルトで中止され、2番目のリクエストが開始されて新しい検索文字列の新しい結果が取得されます。帯域幅と実行時間を無駄にするのは当然ですが、残念ながらIE7では失敗します。

次の図は、FirefoxでFirebugを使用していることを示しています。基本的にすべてのブラウザはIE7(IE6とIE8まで)を除いて正しく動作します。

Attached image showing the behavior in Firebug

誰もが今までにこのようなものを見ましたか?最終的に誰かが、開始されたリクエストを強制終了するのではなく、強制終了させることが可能かどうかを知っていますか?他のアイデア?

ありがとう、どんな助けもありがとうございます!

答えて

1

我々は最終的にtry-catchブロックと私に電話を置くことによって、問題を解決IE7で発生した場合はエラーを無視してください。

おそらくそれを行うには完全な方法ではありませんが、リクエストを中止することのメリットは残りのブラウザでも有効です。

1

私はちょうどsourceオプションに文字列値を使用して、それにURLを提供しています。ウィジェットが進行中の場合、AJAXリクエストを中止することは間違いありません。ウィジェットのソースコードからCheck out this snippet

url = this.options.source; 
this.source = function(request, response) { 
    if (self.xhr) { 
     self.xhr.abort(); // <-- Problematic line. 
    } 
    self.xhr = $.ajax({ 
     url: url, 
     data: request, 
     dataType: "json", 
     autocompleteRequest: ++requestIndex, 
     success: function(data, status) { 
      if (this.autocompleteRequest === requestIndex) { 
       response(data); 
      } 
     }, 
     error: function() { 
      if (this.autocompleteRequest === requestIndex) { 
       response([]); 
      } 
     } 
    }); 
} 

あなたはsourceパラメータに文字列を渡している場合、あなたは簡単に手動でAJAX呼び出しを行う機能でそれを置き換える(そしてあなたが要求を中止していないことができ):

source: function (request, response) { 
    $.ajax({ 
     url: "your_url", 
     data: request.term, 
     dataType: "json", 
     success: function(data, status) { 
      response(data); 
     } 
    }); 
} 

)(未テストが、あなたは正しい方向に向かって取得する必要があります

関連する問題