0

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>
4

2 に答える 2

4

新しいページをロードすると、開いている AJAX リクエストは (ブラウザーによって) キャンセルされます。サーバーは、おそらくクリック カウント リクエストを確認することはありません。

常に新しいウィンドウでリンクを開くか、プロキシ/リダイレクトなど、クリックをカウントするための他のメカニズムを使用してください。

于 2013-04-16T14:23:09.880 に答える