0

我正在尝试制作一个简单的 AJAX 程序,它始终显示文件中的最新文本。它应该从文件中检索它,等待 2 秒钟,如果有什么变化,把它写出来。我已经尝试过了,但代码似乎不起作用。

<html>
<head>
    <script type="text/javascript">
        function sleep()
        {
            var dt = new Date();
            dt.setTime(dt.getTime() + 2000);
            while (new Date().getTime() < dt.getTime());
        }
        function loadXMLDoc()
        {
        var xmlhttp;
        if (window.XMLHttpRequest)
          {
          xmlhttp=new XMLHttpRequest();
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
            }
          }
        xmlhttp.open("GET","ajaxtest.txt",true);
        xmlhttp.send();
        }
    </script>
</head>
<body>
    <script>
    while (0=0)
     {
        loadXMLDoc();

    </script>
        <div id="myDiv"><h2>Status</h2></div>
        <script type="text/javascript">
        setTimeout(loadXMLDoc(),1000)
    }
    </script>

</body>
</html>

如何让它自动检查和更新文本?

谢谢!

编辑:

这是任何有兴趣的人的最终代码:

<html>
<head>
    <script type="text/javascript">
        function loadXMLDoc()
        {
        var xmlhttp;
        if (window.XMLHttpRequest)
          {
          xmlhttp=new XMLHttpRequest();
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
            }
          }
        xmlhttp.open("GET","status.txt",true);
        xmlhttp.send();
        }
    </script>
</head>
<body>
    <script type="text/javascript">
        loadXMLDoc();
    </script>
    <div id="myDiv">Current Status</div>
    <script type="text/javascript">
        setInterval("loadXMLDoc()", 2000);
    </script>
</body>
</html>
4

1 回答 1

0

我不确定它是拼写错误还是来自其他语言的东西。(如 PHP)

在 HTML 中,您不能拥有跨越多个脚本标签的 javascript 代码。

此外,您的 while 循环只有一个 = 符号,需要两个进行比较。

但话虽如此,您确实需要 setTimeout 或 setInterval,因为非多线程 javascript 只会锁定,多线程 JavaScript 也会浪费处理时间,但不会完全锁定。

就像是

setInterval("loadXMLDoc()", 2000);

setTimeout 在第二个参数毫秒后执行第一个参数作为javascript。

setInterval 执行类似的 setTimeout,除了每 X 毫秒。

setTimeout 和 setInterval 都返回一个值,该值可用于阻止 javascript 再次执行。

该值用于clearTimeout(value)clearInterval(value)

您的页面正文如下所示:

<body>
    <div id="myDiv"><h2>Status</h2></div>
    <script type="text/javascript">
        setInterval("loadXMLDoc()", 2000);
    </script>
</body>
于 2012-08-09T07:18:56.940 回答