1. ホーム
  2. javascript

[解決済み] 前のリクエストが完了する前に新しいAJAXリクエストを中止する

2023-05-03 07:43:15

質問

入力の変化に対してAJAXコールを実行する関数があります。

しかし、前回のAJAX呼び出しが完了する前に、再度関数が実行される可能性があります。

私の質問は、新しい呼び出しを開始する前に、どのように前のAJAX呼び出しを中止するかということです。 グローバル変数を使用せずに。(同様の質問に対する回答を参照してください ここで )

JSFiddle 私の現在のコードの

Javascriptです。

var filterCandidates = function(form){
    //Previous request needs to be aborted.
    var request = $.ajax({
        type: 'POST',
        url: '/echo/json/',
        data: {
            json: JSON.stringify({
                count: 1
            })
        },
        success: function(data){
            if(typeof data !== 'undefined'){
                jQuery('.count').text(data.count)
                console.log(data.count);
            }
        }
    });
};

if(jQuery('#search').length > 0){
    var form = jQuery('#search');
    jQuery(form).find(':input').change(function() {
        filterCandidates(form);
    });
    filterCandidates(form);
}

HTMLです。

<form id="search" name="search">
    <input name="test" type="text" />
    <input name="testtwo" type="text" />
</form>
<span class="count"></span>

どのように解決するのですか?

 var currentRequest = null;    

currentRequest = jQuery.ajax({
    type: 'POST',
    data: 'value=' + text,
    url: 'AJAX_URL',
    beforeSend : function()    {           
        if(currentRequest != null) {
            currentRequest.abort();
        }
    },
    success: function(data) {
        // Success
    },
    error:function(e){
      // Error
    }
});