settimeout在ajax调用中无法正常工作

jle*_*and 1 ajax jquery timeout

我正在开发一个小型Web应用程序.我已经完成了服务器端代码,但我正在努力与客户端javascript.

我有一个每秒更新的html文件.此文件是完全静态的,我仅将其用于日志目的.

这个想法几乎完全相同,但在客户端进行了自动更新.

为此我想使用ajax进行数据库轮询.

我在这里实现了第一个版本,它只是打印相同的html文件,并且应该每秒重新加载它.

事情就是不更新,即使我在我的javascript控制台客户端没有看到任何错误.找到该文件,因为它正确加载,我没有看到为什么它不会更新我的div的任何原因.

这是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <!-- Using Google CDN -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    <script>
        (function worker() {
          $.ajax({
            url : 'http://jlengrand.pythonanywhere.com/static/leader.html',
            success: function(data) {
              $('.text').html(data);
            },
            complete: function() {
              setTimeout(worker, 1000);
            }
          });
        })();
    </script>
</head>
<body>
    <div class="text">
        To be loaded <br />
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我尝试了本地(但文件较小)并且工作正常.

我知道重新加载整个文件并不聪明,但我想逐步构建,因为这是我第一次使用JavaScript开发.

我错过了什么?

Sor*_*ati 6

错误:无用的setTimeout调用(参数周围缺少引号?)

你在setTimeout中运行worker.你需要删除()或者你需要把它放在''中:

setTimeout(worker, 1000);
Run Code Online (Sandbox Code Playgroud)

要么

setTimeout('worker()', 1000);
Run Code Online (Sandbox Code Playgroud)

*编辑:要防止缓存,请将网址更改为:

 url : 'http://jlengrand.pythonanywhere.com/static/leader.html?rand='+Math.random(),
Run Code Online (Sandbox Code Playgroud)