Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用setInterval()和AJAX实现高CPU使用率和同步XMLHttpRequest警告_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript 使用setInterval()和AJAX实现高CPU使用率和同步XMLHttpRequest警告

Javascript 使用setInterval()和AJAX实现高CPU使用率和同步XMLHttpRequest警告,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我想使用AJAX每秒更新一个shell命令输出 <script src='jquery-2.2.4.js'></script> <script> setInterval(function() { $.ajax({ url: "test.php", success: function(data) { $

我想使用AJAX每秒更新一个shell命令输出

    <script src='jquery-2.2.4.js'></script>
    <script>

        setInterval(function() {
            $.ajax({
                url: "test.php",
                success: function(data) {
                    $("body").html(data);
                },
                async: true
            });
        }, 1000);

    </script>
</body>
然而,Chrome CPU使用率太高,输出更新速度似乎太快(不是一秒钟)

    <script src='jquery-2.2.4.js'></script>
    <script>

        setInterval(function() {
            $.ajax({
                url: "test.php",
                success: function(data) {
                    $("body").html(data);
                },
                async: true
            });
        }, 1000);

    </script>
</body>
这是HTML文档:

    <script src='jquery-2.2.4.js'></script>
    <script>

        setInterval(function() {
            $.ajax({
                url: "test.php",
                success: function(data) {
                    $("body").html(data);
                },
                async: true
            });
        }, 1000);

    </script>
</body>

setInterval(函数(){
$.ajax({
url:“test.php”,
成功:功能(数据){
$(“body”).html(数据);
},
异步:true
});
}, 1000);
下面是我实际使用的shell命令:

    <script src='jquery-2.2.4.js'></script>
    <script>

        setInterval(function() {
            $.ajax({
                url: "test.php",
                success: function(data) {
                    $("body").html(data);
                },
                async: true
            });
        }, 1000);

    </script>
</body>

系统(“dirc:”)

最好使用setTimeout,它将在每次成功完成ajax后调用

    <script src='jquery-2.2.4.js'></script>
    <script>

        setInterval(function() {
            $.ajax({
                url: "test.php",
                success: function(data) {
                    $("body").html(data);
                },
                async: true
            });
        }, 1000);

    </script>
</body>
您还可以在$.ajax中设置一个错误处理程序,因为可能发生网络故障,并在那里再次调用setTimeout(function(){myajaxfunction();},1000)

    <script src='jquery-2.2.4.js'></script>
    <script>

        setInterval(function() {
            $.ajax({
                url: "test.php",
                success: function(data) {
                    $("body").html(data);
                },
                async: true
            });
        }, 1000);

    </script>
</body>

我找到了解决办法。AJAX请求URL与我请求的URL相同,导致了无限递归循环

    <script src='jquery-2.2.4.js'></script>
    <script>

        setInterval(function() {
            $.ajax({
                url: "test.php",
                success: function(data) {
                    $("body").html(data);
                },
                async: true
            });
        }, 1000);

    </script>
</body>

因此,我所做的是从另一个包含我实际需要的数据的PHP页面请求它。

感谢您的建议,但是AJAX请求似乎仍然在无限循环中运行。是的,它永远不会停止,但它将每1秒触发一次,加上服务器响应请求所需的时间,当它做出反应后,它会再次开火。与以前一样,setInterval的问题是,即使ajax请求尚未完成,它也会每1秒触发一次。您还需要应用其他条件吗?它运行得太快,导致CPU使用率很高。我真的弄明白了,这是一个愚蠢的错误。实际的页面是通过递归循环请求自身的,谢谢。
    <script src='jquery-2.2.4.js'></script>
    <script>

        setInterval(function() {
            $.ajax({
                url: "test.php",
                success: function(data) {
                    $("body").html(data);
                },
                async: true
            });
        }, 1000);

    </script>
</body>