2014-09-19 31 views
0

我對此有點困惑,希望有人能幫我解釋一下。使用jQuery $阿賈克斯我跑是這樣的(這裏的值是不相關的):

$ajax = $.ajax({ 
    type: type, 
    url: url, 
    data: data, 
    dataType: dataType, 
    success: callBack, 
    cache: cache, 
    error:function (xhr, ajaxOptions, thrownError) { 
     dir(thrownError); 
     dir(xhr); 
     dir(ajaxOptions); 
    } 
    }); 

我怎樣才能運行此每隔幾秒鐘?我應該將它包裝在setInterval()中,還是可以使用$ ajax.done並遞歸地再次傳入ajax調用?我不一定問最好的方法是如何做到這一點的一個例子。

+2

是的,你可以使用setInterval,但是......不要這樣做。請在完整回調中使用setTimeout,以避免在慢速連接上堆積Ajax請求。 – 2014-09-19 15:38:59

回答

2

可以使用的setInterval:

setInterval(function(){ 
     $ajax = $.ajax({ 
    type: type, 
    url: url, 
    data: data, 
    dataType: dataType, 
    success: callBack, 
    cache: cache, 
    error:function (xhr, ajaxOptions, thrownError) { 
     dir(thrownError); 
     dir(xhr); 
     dir(ajaxOptions); 
    } 
    }); 
},1000); 

請看看網絡插座,它比ajax更好,如果你希望它是定期調用

+0

否定的選民在這裏留下您的評論,謝謝 – CMPS 2014-09-19 15:40:47

+0

有些人不喜歡正確的答案隊友 – artm 2014-09-19 15:42:03

+1

這可能是一個破壞性的答案。如果異步操作比間隔更長,則在setInterval中使用異步操作可能會導致非常糟糕的結果。僅僅因爲它的作用並不意味着它是一個好主意。 – 2014-09-19 15:42:09

1

的setInterval

var call = function(){ 
    $.ajax({ 
    type: type, 
    url: url, 
    data: data, 
    dataType: dataType, 
    success: callBack, 
    cache: cache, 
    error:function (xhr, ajaxOptions, thrownError) { 
     dir(thrownError); 
     dir(xhr); 
     dir(ajaxOptions); 
    } 
} 

and

setInterval(call, 5000);