先列舉一下Ajax在Jquery和prototype中的實現。
Jquery:
複製代碼 代碼如下:<script language="javascript">
$(function(){
var box = {};
var remoteUrl = 'index.php';
box.interval = 5*60*1000;//5分鐘
box.showBoxInfo = function() {
jQuery.get(remoteUrl, function(data){
var msg_box = $('#msg_box');
msg_box.innerHTML = data;
}
});
}
box.run = function(){
this.showBoxInfo();
setInterval(this.showBoxInfo,this.interval);
};
box.run();
})
</script>
prototype: 複製代碼 代碼如下:<script language="javascript">
var box = {};
box.interval = 5*60*1000;//5分鐘
box.showBoxInfo = function(){
var pars = "";
var remoteUrl = 'index.php';
var myAjax = new Ajax.Request(
remoteUrl,
{
method: 'get',
parameters: pars,
onComplete: box.showResponse
});
};
box.showResponse = function(data){
var msg_box = $("msg_box") ;
msg_box.innerHTML = data.responseText;
};
box.run = function(){
this.showBoxInfo();
setInterval(this.showBoxInfo,this.interval);
};
box.run();
</script>
實際在引入setInterval函數後prototype卻不能重新整理,這是為什麼呢?
原來是prototype對於相同的URL有緩衝機制,應此不能重新整理頁面,特別是在使用者使用F5或點擊“重新整理”後,會出現Ajax響應區空白的bug,這樣就必須讓prototype不重新整理。
對於prototype中的URL添加隨機數
原:var remoteUrl = 'index.php';
修改後:var remoteUrl = 'index.php?rand='+Math.random();
使用GET方式產生一個與頁面顯示無關的參數即可。