2017-02-07 23 views
-2

下面的代碼不會根據setInterval中設置的間隔觸發。當第一次加載頁面時返回結果集,但Ajax腳本在首次加載頁面後不運行。Ajax - setInterval not triggeredd

<html> 
 
    <head> 
 
    <script language="javascript" type="text/javascript" src="jquery.js"></script> 
 
    </head> 
 
    <body> 
 

 
    <!------------------------------------------------------------------------- 
 
    1) Create some html content that can be accessed by jquery 
 
    --------------------------------------------------------------------------> 
 
    <h2> Client example </h2> 
 
    <h3>Output: </h3> 
 
    <div id="output"></div> 
 

 
    <script id="source" language="javascript" type="text/javascript"> 
 

 
    $(function getEvent() 
 
    { 
 
    //----------------------------------------------------------------------- 
 
    // 2) Send a http request with AJAX http://api.jquery.com/jQuery.ajax/ 
 
    //----------------------------------------------------------------------- 
 
    $.ajax({ 
 
\t url: 'get_events.php', data: "", dataType: 'json', success: function(rows) 
 
\t { 
 
\t  for (var i in rows) 
 
\t  { 
 
\t  var row = rows[i]; 
 

 
\t  var id = row[0]; 
 
\t  var vname = row[1]; 
 
\t  var time = row[2]; 
 
\t  $('#output').append("<b>id: </b>"+id+"<b> name: </b>"+vname+"<b> time: </b>"+time) 
 
\t     .append("<hr />"); 
 
\t  } 
 
\t } 
 
\t }); 
 
    }); 
 

 
$(document).ready(function() { 
 
var run = setInterval(getEvent, 1000); 
 
}); 
 

 
    </script> 
 
    </body> 
 
</html>

我已經看過這個論壇的所有相近崗位,但我還是不能讓我的功能由setInterval的觸發。請參閱下面的代碼。任何幫助表示讚賞。

+1

你不需要在'$(...)'中包裝你的函數;該語法僅用作'$(document).ready(...)'的簡寫。刪除它,它應該按預期工作。 – cmbuckley

+0

使用瀏覽器的控制檯進行調試。沒有使用它就無法開發。 –

回答

-1

看起來你的功能不在全球範圍內。 Setinterval不知道它。

使用var getEvent = function() { ... }來聲明函數而不是$包裝。

+1

正確答案的兩個看法。你有沒有聽說過雙贏?) –

-1

通過這樣做

$(function functionName(){/*function body*/}) 

您傳遞的功能,名爲$其他功能。這不會在任何地方創建一個名爲functionName的函數。所以,當你開始你的間隔時,你試圖調用一個不存在的函數。

從您的函數聲明中移除$()。這將定義一個函數,而不是將其作爲參數傳遞。

+0

'這不會在任何地方創建一個名爲functionName的函數。 '它在呼叫中可用。 –

+0

@ shukshin.ivan是的。 jQuery只運行一次,因爲它的作者決定如此,就這些。如果$不是jQuery,它可以對傳遞的函數做其他事情,包括什麼都不做。我知道我可以提到它在函數的作用域中可用,並且可以通過arguments對象來訪問它。 –