下面的代码不会按照setInterval中设置的间隔触发。第一次返回结果集时加载页面,但第一次加载页面后Ajax脚本不会运行。
<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({
url: 'get_events.php', data: "", dataType: 'json', success: function(rows)
{
for (var i in rows)
{
var row = rows[i];
var id = row[0];
var vname = row[1];
var time = row[2];
$('#output').append("<b>id: </b>"+id+"<b> name: </b>"+vname+"<b> time: </b>"+time)
.append("<hr />");
}
}
});
});
$(document).ready(function () {
var run = setInterval(getEvent, 1000);
});
</script>
</body>
</html>
我已经查看了此论坛中的所有类似帖子,但我仍然无法通过setInterval触发我的函数。请参阅下面的代码。任何帮助表示赞赏。
答案 0 :(得分:-1)
看起来您的功能不在全球范围内。 Setinterval不知道它。
使用var getEvent = function() { ... }
声明函数而不是$
包装器。
答案 1 :(得分:-1)
通过这样做
$(function functionName(){/*function body*/})
您正在将一个函数传递给另一个名为$的函数。这不会在任何地方创建一个名为functionName的函数。所以,当你开始你的间隔时,你正试图调用一个不存在的函数。
从函数声明中删除$()
。这将定义一个函数,而不是将其作为参数传递。