jquery - Отображение картинки при подгрузке файла (load)


1

Ребята, скажите, пожалуйста, как сделать, чтобы пока подгружается файл, показывалась картинка (loader), а после загрузки она убиралась? Типа как .ajaxStart.

  •  1903
  •  1
  • 11 янв 2012 2012-01-11 08:39:47

1 ответ

4

.ajaxSetup, .ajaxStart, .ajaxStop

$(function() {
    var $loader = $(#loader);
    $.ajaxSetup({
        start: function() { $loader.show(); },
        complete: function() { $loader.hide(); } // в случае успеха/ошибки
    });
});

Я в своем проекте еще нечто вроде простейшего стека делал на основе списка, чтобы loader отображался, пока есть хоть один запрос (в бэкграунде, мол, работаю):

var ajax_queue = [],
    $ajax_spinner = $(#ajax_spinner);

$.ajaxSetup({
    timeout: 20000, // для кроссдоменных
    beforeSend: function(XHR) {
        ajax_queue.push(XHR);
        $ajax_spinner.show();
    },
    complete: function() {
        ajax_queue.pop();
        $ajax_spinner.toggle(!!ajax_queue.length); // must be Boolean!
    }
});

Пользуйтесь!

все сделал! спасибо всем! — 11 янв 20122012-01-11 08:57:02.000000
@zhekonya вы о чем? Timeout чаще всего необходим для кроссбраузерных запросов. В ином случае браузер сам разруливает, когда случилась ошибка — 11 янв 20122012-01-11 08:46:16.000000
Хм.. Возможно, что в новых версиях были изменения. Раньше пробовал - не прокатывал. Ну, тем лучше. — 11 янв 20122012-01-11 08:30:39.000000
Только что попробовал - для .get() все замечательно работает — 11 янв 20122012-01-11 08:25:09.000000
Только надо добавить, что методы эти работают только для $.ajax()**. Если используется **$.post() или $.get(), то параметры не отработают. — 11 янв 20122012-01-11 08:21:23.000000