2011-06-27 75 views
0

我有一個setintervall至極調用(每10s)的下一個功能:getJSON調用似乎只觸發一次?

function myJSONCall(imgIDs) { 
    var href = $('#href_' + imgIDs[0]).attr('href'); 
    alert("MyJSONCall..." + href); 

    $.getJSON("/mvc-ajax/ac/availability", { 
     url: href 
    }, function(availability) { 
     alert("Availabilit=" + availability); 
     if (availability == "OK") { 
      alert("It's a valid location"); 
     } else { 
      alert("It's an invalid location"); 
     } 
    }); 
    alert("I left from myJSONCall"); 
} 

我不知道爲什麼,在「的getJSON」時纔會觸發一次。 $ .getJSON之間設置的「警報」每10秒顯示一次。所以有什麼問題 ?

回答

1

ajax是異步的。在ajax調用返回後移動你的settimeout(或間隔):

function myJSONCall(imgIDs) { 
    var href = $('#href_' + imgIDs[0]).attr('href'); 
    alert("MyJSONCall..." + href); 
    $.getJSON("/mvc-ajax/ac/availability", { 
     url: href 
    }, function (availability) { 
     alert("Availabilit=" + availability); 
     if (availability == "OK") { 
      alert("It's a valid location"); 
     } else { 
      alert("It's an invalid location"); 
     } 
     setTimeout(myJSONCall, 10000); //SET TIMEOUT HERE 
    }); 
    alert("I left from myJSONCall"); 
} 
+0

@Neal:建議我在getJSON調用之後移動setInterval,但不是successull!現在ajax函數只被調用一次。 – Zamboo

+0

不要使用'setInterval'。使用'setTimeout' – Neal

+0

@Zamboo,這也可能意味着你正在使用錯誤的功能。嘗試使用'$ .get'而不是'$ .getJSON' ... – Neal