Я использую следующее, чтобы получить обновленный HTML и вставить его в div с идентификатором "content"
var updater = new Ajax.PeriodicalUpdater('content', '/Doc?'+d.getTime(),
{
method: 'post',
frequency: 5,
});
Проблема в том, что когда сервер выключен (он работает внутри приложения, которое модифицирует данные и выполняет серверную обработку данных), программа обновления просто очищает содержимое div.
Есть ли способ сделать так, чтобы, когда PeriodicalUpdater истекает, получал 404 и т. Д., Он просто оставлял содержимое без изменений? Я бы предпочел, чтобы последние доступные данные просто оставались там, а не стирались.
Для полноты, это весь мой код:
<html>
<head>
<title></title>
<script type="text/javascript" src="/Prototype"></script>
<script type="text/javascript">
var css;
var css_data;
function load_content()
{
var d = new Date();
css = document.createElement('style');
css.setAttribute('type', 'text/css');
if(css.styleSheet) { css.styleSheet.cssText = '';} //Because IE is evil
else { css_data = document.createTextNode(''); css.appendChild(css_data); } //And everyone else is cool
document.getElementsByTagName("head")[0].appendChild(css);
var updater = new Ajax.PeriodicalUpdater({success: 'content'}, '/%doc_path%?'+d.getTime(),
{
method: 'post',
frequency: 5,
onSuccess: function(transport) {
new Ajax.Request('/%css_path%?'+d.getTime(), {
method: 'post',
onSuccess: function(transport) {
if(css.styleSheet) { css.styleSheet.cssText = transport.responseText}
else {
var new_css_data = document.createTextNode(transport.responseText);
css.replaceChild(new_css_data, css_data);
css_data = new_css_data;
}
}
});
new Ajax.Request('/%title_path%?'+d.getTime(), {
method: 'post',
onSuccess: function(transport) {
document.title = transport.responseText;
}
});
}
});
}
</script>
</head>
<body>
<div id="content"></div>
<script type="text/javascript">
load_content();
</script>
</body>
</html>
Как видите, я попробовал решение Триптиха ... но все равно не пошел. Он обновляется с пустыми данными, когда запрос все еще не удается. Поскольку сейчас у меня есть все это, может ли кто-нибудь увидеть какие-либо ошибки, которые я совершаю.
Примечание: игнорируйте строки, такие как% doc_path% ... это просто управляющие строки, которые я использую, чтобы впоследствии их можно было программно заменить на правильный путь для каждого документа ... все, что сделано на сервере и на самом деле не выполняется не имеет значения для этого.
@ Vinze
Согласно документации, onFailure «вызывается, когда запрос завершается и его код состояния существует, но отсутствует в семействе 2xy. Это пропускается, если определен обратный вызов для конкретного кода, и происходит до onComplete».
Но если сервер был остановлен, не истечет ли время ожидания и не будет ли вообще никакого кода состояния? Может я неправильно это понимаю ...