我有幾個jQuery Ajax請求,它們必須是同步的,但它們會一直鎖定/凍結瀏覽器,直到收到響應。我的主要問題是,直到收到響應,我必須顯示一個旋轉圖標,但由於凍結,微調不顯示,即使它奇蹟般地不動畫。同步Ajax請求「鎖定」瀏覽器
這是顯示旋轉器和發送該請求的事件:
$(document).on('click', '#open-button', function() {
var input = "some text";
var wrapper = $('#wrapperWindow');
wrapper.children().animate({
opacity: 0
}, 500);
wrapper.children().remove();
wrapper.append('<div id="loading-spinner" style="display:none;"></div>');
var spinner = $('#loading-spinner');
spinner.css({
backgroundImage: 'url("img/loading.gif")',
opacity: 0
});
spinner.show();
spinner.animate({
opacity: 1
}, 500);
var dataForTab = requestData(input); //<-- the request
if (dataForTab.length > 0) {
//do stuff
}
});
請求:
function requestData(input) {
var result = null;
$.ajax({
async: false,
type: "POST",
url: "/some/url?input=" + input,
dataType: "json",
retryLimit: 3,
success: function (json) {
result = json;
},
error: function (xhr, err) {
console.log(xhr);
console.log(err);
}
});
return result;
}
直到請求返回所接收的JSON數據,一切都停止移動。我該如何解決這個問題?
你不能....修復它的方法是使用異步處理 – 2014-10-22 08:52:55
看看 - http://stackoverflow.com/questions/14220321/how-to-return-the-response- from-an-ajax-call – 2014-10-22 08:53:30
[$ .ajax().async](http://api.jquery.com/jQuery.ajax/) - *請注意,同步請求可能會臨時鎖定瀏覽器,禁用任何操作請求已激活* – 2014-10-22 08:54:14