Почему мой вращающийся GIF останавливается во время выполнения вызова jQuery ajax? - PullRequest
48 голосов
/ 10 октября 2008

Я только начинаю отучать себя от ASP.NET UpdatePanels. Я использую jQuery и jTemplates, чтобы связать результаты веб-сервиса с сеткой, и все работает отлично.

Вот в чем дело: я пытаюсь показать вращающийся GIF во время обновления таблицы (как UpdateProgress в ASP.NET) У меня все работает, за исключением того, что счетчик заморожен. Чтобы увидеть, что происходит, я попытался отодвинуть счетчик от div прогресса обновления и вывести его на страницу, где я могу видеть его все время. Он вращается и вращается до тех пор, пока не начнется обновление, и останется замороженным до завершения обновления, а затем снова начнет вращаться. Не совсем то, что вы хотите от спиннера «пожалуйста, подождите»!

Это в IE7 - еще не было возможности протестировать в других браузерах. Какие-нибудь мысли? Является ли вызов ajax или привязка данных на стороне клиента настолько ресурсоемким, что браузер не может использовать анимированные GIF-файлы?

Обновление

Вот код, который обновляет сетку. Не уверен, является ли это синхронным или асинхронным.

updateConcessions = function(e) {
    $.ajax({
        type: "POST",
        url: "Concessions.aspx/GetConcessions",
        data: "{'Countries':'ga'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            applyTemplate(msg);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        }
    });
}

applyTemplate = function(msg) {
    $('div#TemplateTarget').setTemplate($('div#TemplateSource').html());
    $('div#TemplateTarget').processTemplate(msg);
}

Обновление 2

Я только что проверил документацию jQuery , и метод $.ajax() по умолчанию является асинхронным. Просто для удовольствия я добавил это

$.ajax({
    async: true,
    ...

и это не имело никакого значения.

Ответы [ 12 ]

0 голосов
/ 10 октября 2008

Я видел такое поведение в прошлом, когда делал AJAX-вызовы. Я считаю, что это связано с тем фактом, что браузеры являются только однопоточными, поэтому, когда возвращается вызов AJAX, поток работает над вызовом, поэтому последовательно анимированный GIF должен на мгновение остановиться.

0 голосов
/ 10 октября 2008

Вы делаете синхронный или асинхронный вызов? синхронные вызовы приводят к тому, что браузер блокируется на время вызова. Другая возможность состоит в том, что система очень занята выполнением любой выполняемой работы.

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