Javascript 使用setInterval()和AJAX实现高CPU使用率和同步XMLHttpRequest警告
我想使用AJAX每秒更新一个shell命令输出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) { $
<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>