J'utilise ce qui suit pour saisir du code HTML mis à jour et l'insérer dans un div avec id « content »Prototype Ajax.PeriodicalUpdater insère une chaîne vide lorsque le serveur injoignable
var updater = new Ajax.PeriodicalUpdater('content', '/Doc?'+d.getTime(),
{
method: 'post',
frequency: 5,
});
Le problème est que lorsque le serveur est arrêter (il fonctionne à l'intérieur d'une application qui modifie et réapprovisionne les données), le programme de mise à jour efface simplement le contenu div.
Existe-t-il un moyen de faire en sorte que lorsque PeriodicalUpdater expire, obtienne un 404, etc., il laisse simplement le contenu inchangé? Je préférerais que les dernières données disponibles restent là, ne soient pas effacées.
Pour être complet, voici mon code entier:
<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>
Comme vous pouvez le voir, j'ai essayé la solution de Triptyque ... mais toujours pas aller. Il met à jour avec des données vierges lorsque la demande échoue encore. Depuis que j'ai tout ici, tout le monde peut voir les erreurs que je fais. Remarque: Ignorez les chaînes comme% doc_path% ... ce ne sont que des chaînes de contrôle que j'utilise pour qu'elles puissent être remplacées par programme ultérieurement avec le bon chemin pour chaque document ... tout ce qui est fait sur le serveur et vraiment ça n'a pas d'importance pour ça.
Selon la documentation, onFailure est « Invoqué lorsqu'une demande complète et son code d'état existe mais pas dans la famille 2xy. Ceci est ignorée si on définit un rappel spécifique à code, et arrive avant onComplete. "
Mais si le serveur a été arrêté, est-ce que ce n'est pas le cas et qu'il n'y a pas de code d'état? Peut-être que je comprends que mal ...
@Basic - ah. À l'avenir, juste un drapeau, vous n'avez pas besoin de modifier car nous avons un outil de mod pour faire des trucs intelligents comme ça. Mais merci quand même :) – Kev