Ajax延迟请求

时间:2017-09-20 05:07:15

标签: javascript php jquery ajax

我的行为很奇怪,

我在第一次通话后不断呼叫ajax,第一个是下拉选择,另一个是连续延迟,第一个是从下拉选择一个城市后调用,我将该值存储在一个全局变量中,

$('.selectCity').change(function () {
    var city = $(this).val();
    ...
    ...

然后我在ajax调用中使用city,如:

var timer, delay = 3000;

timer = setInterval(function(){
    $.ajax({
    type: 'GET',
    url: '/riders/location/track',
    data: {
       'city': city
    },
    ...
    ...
    ...

当我选择一个城市时,假设london然后延迟ajax请求调用并且结果是预期的,

但是当我再次选择另一个城市时,我们可以说Boston,那么延迟方法会为london调用两次,而Boston调用另一个,这应该只调用{{} 1}}

2 个答案:

答案 0 :(得分:1)

您的问题是您正在为每个城市更改定义间隔,但在城市更改后不会清除它,因此您有累积的间隔。

  

setInterval(callback,ms)

     

计划每隔ms毫秒重复调用回调。任何其他参数都会直接传递给回调。

如果您只想延迟一次Ajax请求,则应该使用setTimeout api。

答案 1 :(得分:0)

在再次呼叫之前,您应该清除field。 更多信息在这里 https://www.w3schools.com/jsref/met_win_clearinterval.asp

在你的情况下,它是

setInterval handler