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時,將顯示它並刪除微調器(如果有的話)。 –