我的行为很奇怪,
我在第一次通话后不断呼叫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}}
答案 0 :(得分:1)
您的问题是您正在为每个城市更改定义间隔,但在城市更改后不会清除它,因此您有累积的间隔。
setInterval(callback,ms)
计划每隔ms毫秒重复调用回调。任何其他参数都会直接传递给回调。
如果您只想延迟一次Ajax请求,则应该使用setTimeout
api。
答案 1 :(得分:0)
在再次呼叫之前,您应该清除field
。
更多信息在这里
https://www.w3schools.com/jsref/met_win_clearinterval.asp
在你的情况下,它是
setInterval handler