jQuery ajax и загрузка не будут повторяться в Chrome или IE8 - PullRequest
0 голосов
/ 09 марта 2012

Я нашел другие потоки, обсуждающие .load и .ajax с Chrome и IE, но ни один из них не связан с моей конкретной проблемой.

Я использую следующий код для вызова ответа от сервлета.Ответом должно быть 3 строки text / html, но я могу настроить его на text / plain.

function checkProgress(){
    $.ajax({
        type: "GET",
        url: "/myServlet",
        success: function(result) {
            $('#data').text(result);
            setTimeout(checkProgress, 2000);
        }

    });​
}

Идея состоит в том, чтобы использовать значение каждые 2 секунды.и отображать в div.

<div id="status" style="display:none;">                
            <h3>Status</h3>                
                <p id="data"></p>
            </div>  

Проблема, с которой я столкнулся, заключается в том, что она загружается только 1 раз в Chrome и IE8.FF будет повторять загрузку, и я вижу изменение значения в браузере.

Другие проблемы, о которых я слышал, говорят о том, что это вообще не работает в Chrome и IE8, но моя работает.Это просто не будет повторять загрузку.

Я также пробовал это с .load, потому что я хочу сохранить любое форматирование HTML и столкнулся с той же проблемой.Я готов пока пропустить форматирование, чтобы я мог получить это для обновления.

Любая помощь очень ценится!

EDITED Еще немного изучив Chrome, яобнаружил, что он останавливает сценарий ajax при отправке формы.Моя страница запускает довольно длинный сервлет.Я использую Ajax-вызов для возврата обновлений статуса из сервлета.Когда я отправляю сервлет для запуска, скрипт, который запускает отчет о состоянии, останавливается в Chrome.Нет ошибокОн просто перестает работать.

Это похоже на проблему многопоточности в Chrome.Есть ли лучший способ сделать это?Могу ли я одновременно запустить и ajax, и сервлет с событием onsubmit?

Ответы [ 2 ]

1 голос
/ 09 марта 2012

IE кеширует ajax-запросы.Как насчет добавления случайной строки вместе с URL, чтобы каждый раз делать новый запрос?

Установите значение свойства кэша в false.Таким образом, jquery добавит уникальную временную метку ко всем запросам, поэтому она не будет кэшированным ответом каждый раз.

function checkProgress(){

    $.ajax({
        type: "GET",
        url: "/myServlet" ,
        cache: false,
        success: function(result) {
            $('#data').text(result);
            setTimeout(checkProgress, 2000);
        }

    });​
}
0 голосов
/ 09 марта 2012

Ваш код:

setTimeout(checkProgress, 2000);

Измените его на, вы пропустили () :

setTimeout(function(){
    checkProgress();
}, 2000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...