javascript - jQuery 在函数执行时更改图像以显示进度

标签 javascript jquery dom asynchronous

我知道在某些浏览器(IE、Chrome)中,直到函数完成后才会发生对 DOM 的更改。我已经阅读了有关如何处理此问题的各种建议,但我没有任何运气。我试图循环执行一系列 AJAX 调用并显示正在处理的每一行的进度。代码是这样的:

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() 适用于异步模式,但即使在异步模式下,它似乎也没有帮助。)

最佳答案

Jquery:

$.ajax({
      type: 'GET',
      url: ajaxUrl,
      async: false,
      processData: true,
      data: {},
      dataType: "json",
      success: function(data) {
             $(rowImage).attr('src', '/images/success.gif');
      }
 });

 $(document).ajaxStart(function () {
        $(rowImage).attr('src', '/images/spinner.gif');
    }).ajaxStop(function () {

 });

关于javascript - jQuery 在函数执行时更改图像以显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26066164/

相关文章:

javascript - 在 html 模板中给元素一个 id 可以吗?

javascript - 这 2 种方法哪种更有效?

javascript - 消除渲染阻塞 javascript - 谷歌开发者建议总结

javascript - 如何将 "inject"partialView元素转化为DOM添加jQuery代码?

javascript - 在列出元素之前删除纯文本

javascript - jQuery UI 日期选择器 : move to the next field after date select

javascript - 使用 iframe 实现 Fancybox

javascript - 如何在字符串中的第二个字符后插入字符?

javascript - 禁用动画期间单击按钮 Javascript/jQuery

javascript - Internet Explorer 的 Fancybox Iframe 错误