2

ページに3つの要素があると仮定します。

  • 数値の連絡先IDを受け入れるテキストボックス。
  • クリックすると、テキストボックスに入力された連絡先IDの連絡先情報を取得するようにサーバーにAjaxリクエストを送信するボタン。
  • divサーバーから取得した連絡先情報を表示するA。

ここで、さらに2つのことを想定します。

  • サーバーからの往復には5秒かかると予想されます。
  • 5秒間の遅延中に、ユーザーがテキストボックスに別の番号を入力してボタンをクリックした場合、Webページは最初のajax結果を無視し、2番目の結果(つまり、最新のAjax要求)を尊重する必要があります。

私の質問:

4

2 に答える 2

2

成功コールバックですべてを処理するだけです。コールバックで最初にチェックするのは、新しい情報が入力されているかどうかです。入力されている場合は、新しい情報が優先されます。それ以外の場合は、リクエストの結果を確認してください。

必要に応じてフラグを設定するのは非常に簡単です。新しいリクエストが送信されるたびにフラグを立てます。成功コールバックで使用します。

于 2012-07-03T01:38:41.417 に答える
1
ResponsibleObject = {
  lastAjaxId: 0,
  onChangeSomething: function() {
    var ajaxObject = $.ajax({
       // some settings
       success:this.ajaxCallback
    });
    ajaxObject.__id = ++this.lastAjaxId;
  },
  ajaxCallback: function(data, textStatus, jqXHR) {
    if (jqXHR.__id != ResponsibleObject.lastAjaxId) {
        return false;
    }
    // put your code here
  }
};
于 2012-07-03T01:46:50.393 に答える