SetInterval同时在两个URL上调用AJAX请求

时间:2014-04-08 16:15:31

标签: javascript ajax setinterval

我有一个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仅用于点击的网址。那就是它。

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

setInterval的返回值是一个允许您取消该间隔的ID:

var timer = setInterval(...);

// later on...
clearInterval(timer)

您需要将setInterval Id存储在变量中,然后在下次单击鼠标时清除间隔。