我通过使用AJAX调用页面来计算链接的点击次数,但是在Firefox中,显然是因为调用的页面从未实际加载过,因为某些原因Firefox从不调用它。似乎链接被点击,然后Firefox进行AJAX调用,但不知何故因为页面更改为href中的实际链接,然后AJAX调用从未实际发送(在firebug中显示为红色,并且在Fiddler中没有显示它)。它在IE& Chrome,如果我将链接更改为target =“_ new”,那么它将在Firefox中运行。我犯了某种愚蠢的错误吗?
<HTML>
<HEAD>
<script type="text/javascript">
function adtrk(cde){
var ajaxRequest; // The variable that makes Ajax possible!
var r=Math.random();
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaresp = ajaxRequest.responseText;
}
}
ajaxRequest.open("GET", "/atr.php?cde=" + cde + "&r=" + r, true);
ajaxRequest.send(null);
}
</script>
</HEAD>
<BODY>
<a onclick="adtrk('zip1'); return true;" href="http://www.google.com"><img src="/images/img.jpg"></a>
</BODY>
</HTML>
答案 0 :(得分:4)
当您加载新页面时,任何打开的AJAX请求都将被取消(由浏览器)。您的服务器可能永远不会看到点击次数请求。
要么总是在新窗口中打开链接,要么使用其他机制来计算点击次数,例如代理/重定向。
答案 1 :(得分:0)
页面在ajax请求完成之前更改。您应该在更改页面之前等待ajax请求结束,方法是同步运行:
ajaxRequest.open("GET", "/atr.php?cde=" + cde + "&r=" + r, false);