Ajax - setInterval未触发

时间:2017-02-07 16:32:57

标签: javascript jquery ajax setinterval

下面的代码不会按照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触发我的函数。请参阅下面的代码。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:-1)

看起来您的功能不在全球范围内。 Setinterval不知道它。

使用var getEvent = function() { ... }声明函数而不是$包装器。

答案 1 :(得分:-1)

通过这样做

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

您正在将一个函数传递给另一个名为$的函数。这不会在任何地方创建一个名为functionName的函数。所以,当你开始你的间隔时,你正试图调用一个不存在的函数。

从函数声明中删除$()。这将定义一个函数,而不是将其作为参数传递。