【问题标题】:SetInterval calling AJAX request on two URLs at the same timeSetInterval 同时在两个 URL 上调用 AJAX 请求
【发布时间】:2014-04-08 16:15:31
【问题描述】:

我有一个像这样的 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);
});

当我点击第一个 URL(比如说 url1)时,一切正常,第一个 AJAX 请求被发送,另一个请求每 9 秒触发一次。

点击 url2 时出现问题。对 url2 的成功响应很好,但现在,AJAX 请求被触发了两次:

AJAXRequesturl1
AJAXRequesturl2

我不想要这个,我只想要setInterval 用于已点击的网址。就是这样。

如何解决这个问题?

【问题讨论】:

    标签: javascript ajax setinterval


    【解决方案1】:

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

    var timer = setInterval(...);
    
    // later on...
    clearInterval(timer)
    

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

    【讨论】:

      猜你喜欢
      • 2013-01-21
      • 2012-03-30
      • 2011-01-13
      • 2011-11-28
      • 2013-11-27
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      相关资源
      最近更新 更多