我使用以下抓住一些更新的HTML,並將其與ID爲「內容」原型Ajax.PeriodicalUpdater插入時無法連接到服務器
var updater = new Ajax.PeriodicalUpdater('content', '/Doc?'+d.getTime(),
{
method: 'post',
frequency: 5,
});
的問題是插入一個div空字符串,當服務器關閉(它運行在正在修改和服務器數據的應用程序內部),更新程序然後只是清除內容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%這樣的字符串...這些只是我使用的控制字符串,以便稍後可以用編程方式替換每個文檔的正確路徑...所有在服務器上完成的東西,這並不重要。
根據該文件,onFailure處是「時調用請求完成和存在的狀態代碼,但不是在2XY家庭。如果一個特定代碼的回調定義這被跳過,並在onComplete之前發生。「
但是,如果服務器停了,它不會超時,並且根本沒有狀態碼嗎?也許我的理解是錯誤的...
@基礎 - 啊。在將來只需要標記,你不需要編輯,因爲我們有一個mod工具來做這種聰明的事情。但是,無論如何感謝:) – Kev 2012-07-13 22:59:46