我知道,在一些瀏覽器(IE瀏覽器,鉻)更改爲DOM不會發生,直到函數完成後。我已經閱讀了關於如何處理這個問題的各種建議,但我沒有任何運氣。我試圖通過一系列AJAX調用進行循環,並顯示正在處理的每一行的進度。該代碼是這樣的:jQuery改變圖像,而功能正在執行,以顯示進度
for(i=0; i < rowIds.length; i++){
$(rowImage).attr('src', '/images/spinner.gif');
$.ajax({
type: 'GET',
url: ajaxUrl,
async: false,
processData: true,
data: {},
dataType: "json",
success: function(data) {
$(rowImage).attr('src', '/images/success.gif');
}
});
}
我讀過有關努力,以確保圖像轉變發生在繼續之前,如AJAX調用開始之前這樣幾點建議:
var changeImage = function() {
$(rowImage).attr('src', '/images/spinner.gif');
};
$.when(changeImage()).done(function() {
//run AJAX call
但這並沒有什麼區別。直到功能完成執行後,圖像纔會更改。
您將會注意到,我將async設置爲false,並且出於各種原因正在執行此操作。但即使沒有到位,這個問題仍然存在。我也嘗試使用setTimeOut(),因爲已經建議,並且似乎不工作(並且我知道setTimeOut()是爲異步模式,但即使在異步它似乎沒有幫助。)
歡迎來到使用鎖定瀏覽器的同步Ajax調用的世界。 – epascarello 2014-09-26 18:38:50