如何在使用XMLHttpRequest时获取当前URL

时间:2012-02-25 13:02:55

标签: php onbeforeunload

我有以下代码在onbeforeunload事件上调用count_visit.php。这很好用。但是,当我使用$ _SERVER ['REQUEST_URI']时,结果是count_visit.php而不是真实的URL。

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

function record_visit() {
    var x = (window.ActiveXObject) ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
    x.open("GET", "count_visit.php?t=" + (((new Date()).getTime() - startime) / 1000), false);
    x.send(null)
}

即使使用上面的代码,有没有更好的方法来获取当前的URL?或者我需要更改上面的代码?

2 个答案:

答案 0 :(得分:1)

我怀疑你想要包含AJAX的页面的URI,而不是AJAX调用本身 - 但是count_visit.php是正确的$ SERVER ['REQUEST_URI'],因为这是你的AJAX调用的URI脚本。

要获取您需要使用window.location.href的页面URI,请将其转义并将其作为参数发送给您的AJAX调用,例如

x.open("GET", "count_visit.php?t=" + (((new Date()).getTime() - startime) / 1000)+"&url="+escape(window.location.href), false);

在PHP中,您必须记录$_GET['url']

的访问

答案 1 :(得分:-1)

如果要检索完整URI,可以采用以下两种方式: 首先,由于这不是跨域通信,您可以连接两个服务器变量

$_SERVER['HTTP_HOST'] .  $_SERVER['REQUEST_URI'] 

第二种方式,您可以更改上面的代码,并将完整的页面URI作为GET请求的附加变量发送到服务器。