IE9似乎无法识别$ .ajax的'完整'事件

时间:2011-12-01 12:56:43

标签: javascript jquery internet-explorer

我正在使用ajax来允许用户过滤目标div(var target)中显示的内容。

当内容加载时,我会显示一个包含加载程序图像的div ('#loader')

然而,当完成ajax调用时,IE不像其他浏览器那样重新隐藏加载器。

它还将setTimeout()调用(在ajax回调中)标识为“无效参数”。

如果我没有发现这种令人困惑的话,我不会在这里问。谢谢!

CODE:

function run_ajax() {
  $.ajax({
    url: 'artworks_ajax',
    beforeSend: function(){
        target.empty();
        $('#loader').fadeIn();
    },  
    complete: function() {
        $('#loader').fadeOut('fast')
    },  
    data: {
      'select' : 'artworks',
      'artwork-filter': JSON.stringify(filter)
    },  
    success: function(data) {
      target.hide();
      target.html(data);
      fireMasonry();
      reloadMasonry();  // masonry needs reminding how big its div is
      setTimeout(
        fadeUp()
      , 1000); // pause necessary to give masonry time to fix itself in place
      }   
  }); 
}  

2 个答案:

答案 0 :(得分:2)

这里最后有一个分号丢失:

$('#loader').fadeOut('fast') 

此外,setTimeout的第一个参数应该是一个函数,而在这里你调用函数并使用它的返回值。假设fadeUp是一个自由函数,它应该是这样的:

setTimeout(fadeUp, 1000);

答案 1 :(得分:2)

如果由于某种原因仍然存在问题,您可以将完成移至ajax调用之后:$.ajax({ajax_stuff_goes_here}).complete(function() {$('#loader').fadeOut('fast');});