2016-09-29 48 views
0

我要放弃以前的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(); 
     } 

这也不能正常工作。

+0

请注意,它会中止它的客户端,而不是服务器端。你最好稍微反弹你的输入事件,以避免在每个输入上调用新的请求,尽管你(试图)中止前面的任何一个 –

回答

2

var previous_request;移到.on函数的外部。你定义了错误的地方,所以它总是空的。

你也可以console.log /调试过,检查它是否有价值。

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

是的,你是对的谢谢... :) – OBAID