我知道,在一些浏览器(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