Создание ajax-запроса без блокировки загрузки страницы - PullRequest
1 голос
/ 04 июля 2011

Мне нужно сделать очень медленный вызов ajax при загрузке страницы.Проблема в том, что в chrome маленький кружок на вкладке продолжает вращаться, пока не завершится вызов ajax.В Firefox 4 и IE9 он работает должным образом.

В настоящее время я использую

$(document).ready(function () {
   $.doTimeout(1000, slowRequest);
});

, тайм-аут помогает, поскольку он позволяет браузеру продолжить работу, и если браузер завершен доТайм-аут все в порядке, но я обнаружил, что в зависимости от того, насколько медленным клиент / сервер, этот тайм-аут может быть недостаточно продолжительным.

Есть ли лучший способ добиться этого?

Ответы [ 2 ]

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

Честно говоря, я думаю, вы не должны заботиться о вращающемся круге в браузере, но заботитесь о порядке выполнения вашего кода.Я бы просто сделал:

$(document).ready(function () {
   slowRequest();
});

Или, setTimeout(slowRequest, 0);, смысл в том, чтобы запустить ваш запрос ajax, когда у вас уже есть данные для отправки и где их получить.

С задержкой в ​​1 секунду вы избегаете вращающегося круга в некоторых браузерах, НО жертвует временем (1 секунда задержки!).Я думаю, что это более важное время выполнения, чем визуальные детали.

Конечно, ваш ajax-запрос ДОЛЖЕН быть асинхронным (я надеюсь, что это так), если нет, браузер зависнет.

Надеюсь, это поможет,Приветствия

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

Поскольку вы упомянули проблему, возникающую в Chrome, в теге script, который содержит код для выполнения медленного вызова AJAX, вы можете попробовать добавить атрибут async, например:

<script type="text/javascript" async="async">
...
</script>

Я считаю, что атрибут работает в Firefox 3.6+ и Chrome, но не в любом другом браузере: (

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