Ajax - 更新内容时的浏览器滞后

时间:2014-04-03 06:56:17

标签: javascript jquery ajax json

我正在尝试更新状态页面。

我正在使用Ajax来更新页面。更新设置为每3秒更新一次。但无论何时调用更新,浏览器都会冻结至少一两秒钟。

<script type="text/javascript">
    window.onload = updateStatus;

    function updateStatus() {
        updateinfo();
        setTimeout(updateStatus, 3000);
    }

    function getJson(theUrl, update) {
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                update(xmlhttp.responseText);
            }
        }
        xmlhttp.open("GET", theUrl, false);
        xmlhttp.send();
    }

    function updateinfo() {
        getJson('backend/status', function(update) {
            var jsono = JSON.parse(update);
            document.getElementById('name').innerHTML = jsono.name;
            document.getElementById('online').innerHTML += jsono.online;
            document.getElementById('ip').innerHTML = jsono.ip + ':';
            document.getElementById('ip').innerHTML += jsono.port;
            document.getElementById('memory').innerHTML = jsono.memory + " MB";
        });

    }
</script>

如果有人可以给我提示改善这一点。使它不那么迟钝或让它消失。

2)我一直在考虑使用JQuery。我应该搬家吗?优点和缺点?与仅JavaScript相比,JQuery的性能如何明智?

1 个答案:

答案 0 :(得分:3)

您正在让AJAX请求同步运行 - 这是您永远不需要的,因为这样可以防止它首先成为AJAX,因为A代表异步

xmlhttp.open来电的第三个参数更改为true(或者只是将其保留,因为这是默认值。)