2014-04-08 88 views
0

我有一個AJAX功能和setInterval功能是這樣的:的setInterval呼籲兩個URL AJAX請求在同一時間

$("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秒鐘一次firef。

單擊url2時出現問題。成功精美responsed爲URL2但現在,AJAX請求被觸發兩次:

AJAXRequesturl1 
AJAXRequesturl2 

我不想這樣,我想setInterval只已被點擊的URL。而已。

如何解決這個問題?

回答

1

setInterval返回值是一個ID,讓您以取消間隔:

var timer = setInterval(...); 

// later on... 
clearInterval(timer) 

你需要存儲的setInterval標識在一個變量,然後清除在下次鼠標點擊的時間間隔。

+0

是的,它的工作。謝謝! – pynovice