簡體   English   中英

如何中止ajax請求

[英]How to abort ajax request

在我下面的代碼中,如果輸入搜索谷為空,並且搜索關鍵字相同,則表示如果再次輸入“ abc”又單擊了結果,則需要中止ajax請求,我已經編寫了beforesend方法,但是瀏覽器拋出錯誤“無法讀取屬性未定義的“中止”

Ajax代碼:

    function makeRequest()
    {
    var searchText='';
        var popupRequest = $.ajax({
            url:"cnc/cncstorelocator",
            type:'GET',
            cache:false,
            data: {searchCriteria : $('#cnc-searchcriteria').val()},
            dataType: 'json',
            beforeSend: function(){               
  if(searchText == '' && searchText == searchData) {
                      popupRequest.abort();
                    }
                },
            success : function(cncStoreLocatorData)
            {
                 var store=null;
                for (var i = 0; i < cncStoreLocatorData.length; i++) {
                  var loc = cncStoreLocatorData[i];
                 store = $('<div/>').addClass('pane');
                  var store_hours = loc.hrsOfOperation;
                 var str1 =  $('<p/>').addClass('stores-timing');
                 var store_timings=null;
                  for (var j = 0; j < store_hours.length; j++) {
                         var storetime = store_hours[j];
                        store_timings = str1.append($('<span/>').html('<strong>' + storetime.days_short));
                        store_timings.appendTo(store);
                     }
                  $("#cncstorepane").append(store);
                  searchText=searchData;
                   }
            },
            error: function(cncStoreLocatorData) {
                    alert("can't make req");
                }

          });

    }
    var xhr = $.ajax({
    type: "POST",
    url: "XXX.php",
    data: "name=marry&location=London",
    success: function(msg){
       alert( "The Data Saved: " + msg );
    }
});

//kill the request
xhr.abort()
var xhr = null;
function makeRequest()
    {
    if( xhr != null ) {
            xhr.abort();
            xhr = null;
        }
    var searchText='';
        xhr = $.ajax({
            url:"cnc/cncstorelocator",
            type:'GET',
            cache:false,
            data: {searchCriteria : $('#cnc-searchcriteria').val()},
            dataType: 'json',
            beforeSend: function(){               
            if(searchText == '' && searchText == searchData) {
                      xhr.abort();
                    }
                },
            success : function(cncStoreLocatorData)
            {
                var store=null;
                for (var i = 0; i < cncStoreLocatorData.length; i++) {
                 var loc = cncStoreLocatorData[i];
                 store = $('<div/>').addClass('pane');
                 var store_hours = loc.hrsOfOperation;
                 var str1 =  $('<p/>').addClass('stores-timing');
                 var store_timings=null;
                 for (var j = 0; j < store_hours.length; j++) {
                    var storetime = store_hours[j];
                 store_timings = str1.append($('<span/>').html('<strong>' + storetime.days_short));
                        store_timings.appendTo(store);
                     }
                  $("#cncstorepane").append(store);
                  searchText=searchData;
                   }
            },
            error: function(cncStoreLocatorData) {
                    alert("can't make req");
                }

          });

定義一個變量,並給您的ajax相同的別名。 然后,每次執行該函數時,您都要檢查(在本例中為XHR)是否為null。 如果不是,則中止()它,並再次為其賦予空值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM