我想在2000毫秒左右进行一次AJAX调用。一旦用户点击锚标记,我的AJAX就会被激活。所以在那之后我希望AJAX每2000ms运行一次。
setInterval(function(){
$("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, 15);
}});
});
}, 2000);
问题是,它运行很多次,当我点击它时,它会停止。然后,当我点击它时,它会运行很多次。 怎么了?
答案 0 :(得分:2)
每次触发时,你的间隔绑定事件处理程序。
使用setInterval
click
$("a[name=device_submit]").click(function(event) {
setInterval(function() {
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, 15);
});
}
}, 2000);
});
答案 1 :(得分:0)
如果您希望每2秒触发一次AJAX,请不要重新绑定您的点击处理程序,如下所示。我添加了一个标志,以便AJAX不会触发,直到您第一次点击按钮(未经测试,大括号可能关闭)
var flag = false;
var url = $("a[name=device_submit]").attr('href');
a["name=device_submit]").click(function(e){
e.preventDefault();
flag = true;
});
setInterval(function(){
if(flag){
$.ajax({url:url,
success:function(data){
var data = JSON.parse(data);
latitude = data[0].fields.latitude;
longitude = data[0].fields.longitude;
initialize(latitude, longitude, 15);
});
}
}, 2000);