Javascript 调用ajax post/get方法时浏览器冻结

Javascript 调用ajax post/get方法时浏览器冻结,javascript,performance,freeze,Javascript,Performance,Freeze,我有两个ajax函数,每当调用它们时,它们都会冻结窗口 有没有办法防止这种行为?(纯javascript) 以下是两个功能: function fetch_json_data(a) { if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest() } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.

我有两个ajax函数,每当调用它们时,它们都会冻结窗口

有没有办法防止这种行为?(纯javascript)

以下是两个功能:

function fetch_json_data(a)
{
if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest() }

xmlhttp.onreadystatechange = function() {

    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        var json_response = JSON.parse(xmlhttp.responseText);

        for (var key in json_response) 
        {               
            if(json_response[key] != null && json_response[key].length > 0)
            {
                var e = document.getElementById(key+".div");
                e.innerHTML = "<pre>"+json_response[key]+"</pre>";      

                var e = document.getElementById(key);
                e.setAttribute("class", "active");
                e.parentNode.parentNode.previousElementSibling.setAttribute("class", "active");

                results_status[key] = true;

                if (key.match("sh"))
                {
                    quick_info.children[2].innerHTML += key + ", ";
                }

                quick_info.setAttribute("class", "show-data");

                close_alert();
            }
        }
    }
}

xmlhttp.open("POST","ajax.php", false);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(a);    
}
函数获取json数据(a) { 如果(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest()} xmlhttp.onreadystatechange=函数(){ if(xmlhttp.readyState==4&&xmlhttp.status==200) { var json_response=json.parse(xmlhttp.responseText); for(json_响应中的var键) { if(json_响应[key]!=null&&json_响应[key].length>0) { var e=document.getElementById(key+“.div”); e、 innerHTML=“+json_响应[键]+”;
function fetch_data(a, b)
{   
if (window.XMLHttpRequest)
{
    xmlhttp = new XMLHttpRequest();
}

xmlhttp.onreadystatechange = function() {

    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        if (last_fetched_element != null) { last_fetched_element.removeAttribute("class") }

        last_fetched_element = document.getElementById(b.id+".div");

        var t = last_fetched_element;
        var response = xmlhttp.responseText;
        if (xmlhttp.responseText.length == 0) response = "No Data";
        t.innerHTML = "<pre>" + response + "</pre>";
        t.setAttribute("class", "show-data");

        document.getElementById(b.id).setAttribute("class", "active");

        close_alert();

        results_status[b.id] = true;
    }
}

xmlhttp.open("POST","ajax.php", false);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(a); // "fname=Henry&lname=Ford"
}
var e=document.getElementById(键); e、 setAttribute(“类”、“活动”); e、 parentNode.parentNode.previousElementSibling.setAttribute(“类”,“活动”); 结果_状态[键]=真; 如果(关键字匹配(“sh”)) { quick_info.children[2].innerHTML+=key+“,”; } quick_info.setAttribute(“类”、“显示数据”); 关闭警报(); } } } } open(“POST”,“ajax.php”,false); setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”); xmlhttp.send(a); } 功能编号2:

xmlhttp.open("POST","ajax.php", false);
函数获取数据(a,b) { if(window.XMLHttpRequest) { xmlhttp=新的XMLHttpRequest(); } xmlhttp.onreadystatechange=函数(){ if(xmlhttp.readyState==4&&xmlhttp.status==200) { if(last_fetched_element!=null){last_fetched_element.removeAttribute(“类”)} 最后获取的元素=document.getElementById(b.id+“.div”); var t=最后一个获取的元素; var response=xmlhttp.responseText; 如果(xmlhttp.responseText.length==0)response=“无数据”; t、 innerHTML=“+响应+”;
xmlhttp.open("POST","ajax.php", true);
t、 setAttribute(“类”、“显示数据”); document.getElementById(b.id).setAttribute(“类”,“活动”); 关闭警报(); 结果_状态[b.id]=真; } } open(“POST”,“ajax.php”,false); setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”); xmlhttp.send(a);/“fname=Henry&lname=Ford” } 我不知道为什么会这样。反应来得相当快,但仍然,
我会很高兴避免这种冻结

函数。第三个参数设置为Async或Normal。当Async设置为
true
时,浏览器不会冻结。在正常情况下,浏览器将冻结并等待加载所有内容。所以换句台词

致:


这是因为您使用的是同步调用,请尝试异步调用

open(方法、url、异步)。。。异步:true(异步)或false(同步)