我有一个AJAX函数和setInterval
函数,如下所示:
$("a[name=device_submit]").click(function(event) {
var get_url = $(this).attr('href');
event.preventDefault();
$.ajax({
url: get_url,
success: function(data) {
var data = JSON.parse(data);
latitude = data[0].fields.latitude;
longitude = data[0].fields.longitude;
initialize(latitude, longitude)
},
statusCode: {
400: function(data) {
alert("No data found for this device!");
}
}
});
setInterval(function() {
$.ajax({
url: get_url,
success: function(data) {
var data = JSON.parse(data);
latitude = data[0].fields.latitude;
longitude = data[0].fields.longitude;
//Remove current marker and change the position
for (var i = 0; i < markersArray.length; i++) {
markersArray[i].setMap(null);
}
changeMarkerPosition(latitude, longitude);
}
});
}, 9000);
});
当我点击第一个网址(让他们说url1)时一切正常,第一个AJAX请求被发送,另一个请求是每隔9秒发送一次。
单击url2时出现问题。对于url2,成功得到了很好的回应,但现在,AJAX请求被触发了两次:
AJAXRequesturl1
AJAXRequesturl2
我不想要这个,我希望setInterval
仅用于点击的网址。那就是它。
如何解决这个问题?
答案 0 :(得分:1)
setInterval
的返回值是一个允许您取消该间隔的ID:
var timer = setInterval(...);
// later on...
clearInterval(timer)
您需要将setInterval Id存储在变量中,然后在下次单击鼠标时清除间隔。