2012-02-27 107 views
0

我在我的页面头部标签下面的代码:页找不到错误的重定向

<script type="text/javascript"> 
var startime = (new Date()).getTime(); 

window.onload = function() 
{ 
    record_visit('ol');   
    setInterval("record_visit('update')", 300000); 
} 

window.onbeforeunload = function(){ record_visit('obul'); } //obul = onbeforeunload 

function record_visit(value) { 
    var x = (window.ActiveXObject) ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest(); 
var url='<?php echo "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>'; 
x.open("GET", "/sc/count_visit.php?t=" + (((new Date()).getTime() - startime)/1000)+"&type="+value+"&url="+url, false); 
    x.send(null); 
} 

它的伟大工程,但在我的下最新的日志信息的Drupal站点,我收到一个错误:

page not found 02/27/2012 - 23:04 count_visit.php Anonymous (not verified) 

因为我每天约有6k位访问者,在一分钟内错误就会出现很多次。

我错过了上面的代码?我认为这不是count_visit.php有问题。

+0

请不要将字符串传递给'setInterval()'或'setTimeout()'。这样做与使用'eval()'一样糟糕,并且只要使用变量,就会导致不可读和可能不安全的代码,因为您需要将它们插入到字符串中,而不是传递实际变量。正确的解决方案是'setInterval(function(){/ * your code *)},msecs);'。 'setTimeout()'同样适用。如果你只想调用一个没有任何参数的函数,你也可以直接传递函数名:'setInterval(someFunction,msecs);'(注意函数名后面有** no **'()') – ThiefMaster 2012-02-27 15:16:14

+0

感谢您的意见。但我无法明白你的观点。我相当新的JavaScript,并愿意明白,如果你可以给我一些修改后的代码。 – jaypabs 2012-02-27 15:20:55

+0

只需用setInterval(function(){record_visit('update');},300000);' – ThiefMaster 2012-02-27 15:22:10

回答

1

您必须对您的url变量进行网址编码。 encodeURIComponent(url)

+0

它似乎仍然继续错误。但我必须等待几个小时。可能它只是一个缓存w /这个页面到目前为止还没有encodeURIComponent。 – jaypabs 2012-02-27 15:29:17