Загрузка div для вызова AJAX не отображается в IE или Chrome, отлично работает в Firefox - PullRequest
2 голосов
/ 27 июля 2011

Я пытаюсь написать очень простую функцию, которая отображает элемент div с надписью «Загрузка ...», затем выполняет вызов jQuery ajax () и после завершения скрывает загрузочный элемент div.Код прекрасно работает в Firefox, но IE 7 (возможно, 8/9, также протестирован только на 7) и Chrome имеют проблемы:

function ajaxwl(url) {
    $('#loadingDiv').show();
    var xmlHttp=$.ajax({type: "GET",
        url: url,
        async: false });
    $('#loadingDiv').hide();
    return xmlHttp;
}

Я прошел по коду с помощью отладчика Chrome, а затемэто сработало - загрузка загрузки была отображена как ожидалось.Однако, если я запускаю код без отладчика, Chrome (и IE 7) загружает запрос AJAX, даже не показывая загрузочный div.Возможно, это как-то связано с тем, что Chrome блокирует браузер, так как я использую не асинхронный запрос?

РЕДАКТИРОВАТЬ: я закончил преобразование запроса в асинхронный запрос (преобразование, которое необходимочтобы быть повсюду в этом коде я унаследовал, но я откладывал ...) и теперь все работает, как ожидалось:

function ajaxwl(url) {
    $('#loadingDiv').show();
    var xmlHttp=$.ajax({type: "GET",
        url: url
    }).done(function() {
        $('#loadingDiv').hide();
    });
    return xmlHttp;
}

Спасибо за быстрые ответы!

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Загружающий div не виден в IE, потому что вы используете AJAX в синхронном режиме, из-за которого при выполнении js браузер зависает, и вы не увидите, когда он виден, а когда скрыт.Во всех других браузерах выполнение js довольно быстрое, так что вы можете видеть его.

0 голосов
/ 27 июля 2011

У меня была такая же проблема в IE некоторое время назад.Проверка проблемы показала, что html, который был возвращен запросом ajax, был искажен (отсутствует закрывающий тег и т. Д.), И в таких сценариях IE очень не простит.Может быть, у вас есть такая же проблема здесь.

...