我有記錄訪問時間的問題。簡單的訪問時間記錄器與AJAX
我寫了測試的html文件是這樣的:
<!DOCTYPE html>
<html>
<body>
<script language="JavaScript" type="text/javascript">
function enter() {
this.chrono = new Date().getMilliseconds();
alert("test");
}
function leave() {
this.chrono = new Date().getMilliseconds() - this.chrono;
var myAjax = new Ajax.Request('visitor_log/ajax_store_visit_duration.php?visit_duration=' + this.chrono.toString(),{
method: 'get',
onComplete:handlerFunction
});
return null;
}
window.onload = enter;
window.onbeforeunload = leave;
</script>
</body>
</html>
PHP文件(visitor_log/ajax_store_visit_duration.php):
<?php
if(isset($_GET["visit_duration"]))
{
$text = $_GET["visit_duration"];
log($text);
}
else die("error");
function log($text)
{
$myFile = "test.txt";
$fh = fopen($myFile, 'wb');
fwrite($fh, $text);
fclose($fh);
}
?>
當我在瀏覽器中鍵入:
http://localhost/visitor_log/ajax_store_visit_duration.php?visit_duration=123
它創建了我想要的文本文件,但似乎AJAX調用onbeforeunload
事件不起作用。
我的代碼有什麼問題?
編輯:
我創建的測試功能,找到與AJAX調用問題。
function testajax(){
this.chrono = new Date().getMilliseconds() - this.chrono;
var blockingRequest = new XMLHttpRequest();
blockingRequest.open("GET", "visitor_log/ajax_store_visit_duration.php?visit_duration=" + 123, false); // async = false
blockingRequest.send();
return null;
}
window.onload = testajax;
</script>
</body>
這不是工作壓力太大。
什麼/哪裏是'handlerFunction'? –
沒有這樣的功能......我從一些頁面拿走了這段代碼......我可以刪除那個handlerFunction嗎? – Kamil
您必須使AJAX調用同步,否則瀏覽器會在卸載時中止/停止請求。 – Ian