1

jsp ページでは、ユーザーがボタンをクリックすると、ajax 呼び出しがトリガーされます。ユーザーがボタンを何度もクリックすると、最後の ajax 呼び出しのみが有効になり、その応答のみが考慮されるようになります。

私が使う:

  var lastRequest=null;
  $('#button').click(function() {           
  if (lastRequest) {
    lastRequest.abort();
    lastRequest = null;
  }

  lastRequest = $.ajax({
        type: "POST",
        url: "MyAction.do",
            success: function (response) {
                  response= $('<div/>').append(response);  
            }
      });       
  });

Firebug では、一部のリクエストが中止されていることがわかりますが、すべてではありません。ajax呼び出しがトリガーされた場合、応答を無視することはできないと思いますか?

編集

MyAction.do に var を設定し、それを成功コールバックで読み取った場合、成功コールバックで競合が発生する可能性はありますか?

場合によっては、どうすればその動作を防ぐことができますか?

4

2 に答える 2

0

object.abort()サービスによって呼び出されたデータを破棄するために使用 します。ボタンをクリックしてサービスを中止するコードを追加しました。あなたのケースに関して試すことができます:)

  lastRequest = $.ajax({
        type: "POST",
        url: "MyAction.do",
            success: function (response) {
                  response= $('<div/>').append(response);  
            }
      });       
  });

$(document).click(function() {lastRequest.abort() });
于 2013-07-19T11:15:19.140 に答える
0

ajax 呼び出しの中止に関する私の経験では、機能するときにかなりランダムになる可能性があります。

私が 1 回か 2 回使用した回避策はカウンターです。

var lastRequest=null;
var started = 0, finished = 0;
$('#button').click(function() {           

  ++started;
  lastRequest = $.ajax({
        type: "POST",
        url: "MyAction.do",
            success: function (response) {
                  //Only do stuff on the last active request
                  if(++finished == started)
                    response= $('<div/>').append(response);  
            }
      });       
});
于 2013-07-19T11:14:20.213 に答える