我有以下脚本,它位于我的HTML页面顶部调用的外部文件中。我的想法是我有一个ping数据库的Ajax请求,当数据库更新时,Ajax会看到这个并调用下面的函数。它在Firefox中运行良好,但在IE中根本不起作用。有什么建议吗?
var GoPopUp = function(){
$('#PopNewCall').fadeIn('slow');
PageRefreshTimer();
}
//Function which refreshes page after a certain number of seconds with no user Inputs
var PageRefreshTimer = function(){
setTimeout("location.reload(true);",30000); //1,000 = 1 second
}
//Function which refreshes page after user has clicked refresh
var RefreshNow = function(){
setTimeout("location.reload(true);",0);
}
编辑:如果有人好奇,我正在使用直接的javascript for ajax。它在下面。我在页面加载时调用它,然后它继续调用自己循环。
function checkRefresh(str)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if (document.getElementById("lastCallID").innerHTML < xmlhttp.responseText)
{
setTimeout(GoPopUp(), 100);
}
else
{
setTimeout('checkRefresh()',15000)
}
}
}
xmlhttp.open("GET","getnewid.php",true);
xmlhttp.send();
}
答案 0 :(得分:2)
这不是答案,但您应该替换
setTimeout("location.reload(true);",0);
与
setTimeout(function(){ location.reload(true) }, 0);
由于前者很慢并导致进行额外评估。
编辑#2:将GoPopUp()
更改为GoPopUp
,您可能不想立即执行它。与checkRefresh
相同。
if (document.getElementById("lastCallID").innerHTML < xmlhttp.responseText)
{
setTimeout(GoPopUp, 100);
}
else
{
setTimeout(checkRefresh,15000)
}
答案 1 :(得分:2)
而不是:
setTimeout(function(){ location.reload(true) }, 0);
你应该写:
location.reload(true);