прерывание ajax не работает

#jquery #ajax

#jquery #ajax

Вопрос:

Я хочу прервать предыдущий запрос ajax при запуске нового, я использую этот код, но он не работает

 <?php $urlToFetchPrice = 'getShippingAmount.php'; ?>
var $wk_jq = jQuery.noConflict();
$wk_jq('#weight').on('input', function() {
    var $this = $wk_jq(this);
    var $element = $wk_jq(this.element);
    var previous_request;
    if (previous_request) {
        previous_request.abort();
    }
    previous_request = $wk_jq.ajax({
        url: "<?=$urlToFetchPrice?>",
        data: {
            weight: $this.val(),
            country: 'BH'
        },
        type: "POST",
        dataType: "json",
        format
        success: function(data) {
            console.log(data);
        },
    });
});
  

Он не показывает никаких ошибок в консоли, но не прерывает предыдущий запрос. Я тоже пробовал это:

 beforeSend: function() {
        if (previous_request != null) {
            previous_request.abort();
        }
  

Это также не работает.

Комментарии:

1. Имейте в виду, это приведет к прерыванию на стороне клиента, но не на стороне сервера. Вам было бы лучше немного отменить событие ввода, чтобы избежать вызова нового запроса при каждом вводе, хотя вы (пытаетесь) прервать любой предыдущий

Ответ №1:

Переместите за var previous_request; пределы вашей .on функции. Вы неправильно определили это место, поэтому оно всегда будет пустым.

Вы также можете console.log / отладить это, чтобы проверить, имеет ли это значение.

 var previous_request;
$wk_jq('#weight').on('input', function() {
   //.....
});