Javascript ajax函数的主线程警告

Javascript ajax函数的主线程警告,javascript,ajax,Javascript,Ajax,我为ajax提供了一组函数来处理POST和GET上的发送和接收数据。但我在Chrome上得到了这样的警告: 主线程上的同步XMLHttpRequest已弃用 我不清楚如何修复这个警告,因为我不想忽视它而导致将来的问题 这是我的ajax函数代码: var ajax = new function(){ var self = this; self.x = function() { if (window.XMLHttpRequest){// code for IE7+

我为ajax提供了一组函数来处理POST和GET上的发送和接收数据。但我在Chrome上得到了这样的警告:

主线程上的同步XMLHttpRequest已弃用

我不清楚如何修复这个警告,因为我不想忽视它而导致将来的问题

这是我的ajax函数代码:

var ajax = new function(){

    var self = this;

    self.x = function() {
        if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
            return new XMLHttpRequest();
        }else{// code for IE6, IE5
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
    };

    self.send = function(url, callback, method, data, sync) {
        var x = self.x();
        x.open(method, url, sync);
        x.onreadystatechange = function() {
            if (x.readyState == 4) {
                callback(x.responseText)
            }
        };
        if (method == 'POST') {
            x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        }
        x.send(data)
    };

    self.get = function(url, data, callback, sync) {
        var query = [];
        for (var key in data) {
            query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
        }
        self.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, sync)
    };


    self.post = function(url, data, callback, sync) {
        var query = [];
        for (var key in data) {
            query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
        }
        self.send(url, callback, 'POST', query.join('&'), sync)
    };
};

此警告的具体原因是什么?我将如何纠正它以符合公认的标准?

调用
send
方法时,请确保最后一个参数(
sync
)设置为false。如果设置为true,它将异步执行AJAX调用,因此不会向您发出警告


同步调用确实被弃用,因为它在等待响应时会完全阻塞主线程。在大多数情况下,这将完全阻塞浏览器的UI,直到调用结束。

问题是,我正在使用AJAX加载HTML页面。因此,我确实需要它在加载页面时在技术上阻止,因为网站在加载页面之前不应该做任何事情。但是如果它被弃用了,处理这类事情的新标准方法是什么呢?只需显示一个白色页面,或者更好的是,显示一个小微调器,让用户知道HTML正在加载。这样,浏览器不会被阻止,用户的结果也不会改变。当您在AJAX调用的结果中收到HTML时,您将显示它并删除微调器(如果有)。