Ваша проблема в том, что вы звоните removeClass('loading')
сразу после того, как вы выполнили вызов ajax, а не после его завершения.
Вы можете сделать removeClass('loading')
в обратном вызове ajax. $.post
позволяет предоставить только success
обратный вызов:
jQuery.post( url, [ data ], [ success(data, textStatus, XMLHttpRequest) ], [ dataType ] )
И загрузочная картинка должна быть удалена в любом случае - успех или неудача, поэтому лучше использовать complete
обратный вызов $.ajax()
:
$('#searchform').submit(function(){
$('#searchresults').addClass('loading');
$.ajax({
type: 'POST',
url: 'search.php',
data: $('#'+this.id).serialize(),
success: function(result){
$('#searchresults').html(result);
},
complete: function() {
$('#searchresults').removeClass('loading');
}
});
return false;
});
Подробнее о обратных вызовах см. В разделе «Функции обратного вызова» в $. Ajax () документы