2015-01-26 8 views
0

Я создал веб-страницу панели мониторинга, которая загружается на телевизор. Эта страница хочет обновляться один раз в секунду.Javascript постоянно обновляет страницу асинхронно

Первый подход, который я попробовал хороший и простой и стандарты отношений:

<meta http-equiv="refresh" content="1"> 

Это создает неприятный эффект мигания в Mac/Chrome и IOS/Safari, который является неприемлемым.

Следующая версия прекрасно работает ... содержимое загружается и представлены без видимых прерывания:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script> 
<script> 
setTimeout(function() { 
    $.ajax({ 
    url: "", 
    context: document.body, 
    success: function(s,x){ 
     $(this).html(s); 
    } 
    }); 
}, 2000); 
</script> 

И это прекрасно работает ... содержимое загружается и представлены без видимых перерывов. Однако через несколько минут это приведет к сбою любого браузера (IE, Chrome, Safari, Mobile Safari).

Есть ли способ решить эту проблему, которая не требует, чтобы я поддерживал две отдельные страницы, перезагружая часть и внутреннюю часть данных?

+0

Можете ли вы определить причину, по которой может произойти сбой браузера? Вероятным виновником является то, что память, используемая страницей, постоянно растет. Вы можете проверить это с помощью консоли разработчика. –

+0

действительно ли вам нужно загрузить все тело? Вы также перезагружаете один и тот же сценарий опроса одновременно (и другие скрипты)? – charlietfl

ответ

2

Используйте timeout, чтобы создать эффект «опроса». Теперь вы просто запускаете запрос каждые 2 секунд независимо от ожиданий ответа. В идеале вы можете использовать сетевые сокеты для этого, но на данный момент:

function makeAjax() { 
    $.ajax({ 
     url: "", 
     context: document.body, 
     success: function(s,x){ 
      $(this).html(s); 
      setTimeout(makeAjax, 2000); 
     } 
    }); 
} 
makeAjax(); 
+1

При таком подходе вы должны создать интервал через каждые 2 секунды. – Fuzzyma

+0

@Fuzzyma - Ahh, означающий «тайм-аут» - длинный день. Ред. – tymeJV

+0

При реализации этого, я вижу запросы, которые идут быстрее и быстрее, а затем в основном это похоже на скалу на клавише F5. –

Смежные вопросы