IE9, похоже, не распознает «завершенное» событие $ .ajax - PullRequest
1 голос
/ 01 декабря 2011

Я использую ajax, чтобы позволить пользователю фильтровать контент, который появляется в целевом div (var target).

Пока загружается контент, я показываю div, содержащий изображение загрузчика ('#loader').

Однако, когда вызов ajax завершен, IE не скрывает загрузчик, как это делают другие браузеры.

Он также идентифицирует вызов setTimeout () (в обратном вызове ajax) как «неверный аргумент».

Если бы я не счел это настолько странным, я бы не стал спрашивать здесь. Спасибо!

КОД:

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 ]

2 голосов
/ 01 декабря 2011

Если по какой-либо причине проблема остается, вы можете перейти к завершению после вызова ajax следующим образом: $.ajax({ajax_stuff_goes_here}).complete(function() {$('#loader').fadeOut('fast');});

2 голосов
/ 01 декабря 2011

Здесь в конце пропущена точка с запятой:

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

Кроме того, первый аргумент setTimeout должен быть функцией, а здесь вы вызываете функцию ииспользуя его возвращаемое значение.Предполагая, что fadeUp является бесплатной функцией, она должна выглядеть следующим образом:

setTimeout(fadeUp, 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...