0
我有一组函数用于处理发送和接收POST和GET数据的ajax。但我得到在Chrome这样的警告:ajax函数的主线程警告
Synchronous XMLHttpRequest on the main thread is deprecated
我不清楚关于如何解决此警告,因为我不想忽略它用在道路上的问题而告终。
这是我的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)
};
};
特别是该警告的原因,以及如何,我会去修正它在公认的标准是什么?
问题是,我使用AJAX加载HTML页面。所以我确实需要它在加载页面时在技术上阻塞'',因为网站在加载页面之前应该什么都不做。但是,如果它不赞成处理这种事情的新标准方法? – Sir
只需显示一个白页,或者更好,一个小微调,让用户知道HTML正在加载。通过这种方式,浏览器不会被阻止,并且用户的结果也不会改变。当您在AJAX调用的结果中收到HTML时,将显示它并删除微调器(如果有的话)。 –