哪种方式最适合为每个访问者创建一个公共变量

Which way is best for making a public variable for every visitor?

本文关键字:一个 变量 创建 访问者 方式最      更新时间:2023-09-26

我试图获得每个人对按钮的总点击次数。我正在考虑使用 ajax 的 POST 函数,但它会在服务器上发出很多 PHP 请求。我想做这样的事情:

<script>
document.getElementById('buttonToClick').onclick = function() {
    var totalClicks = ???; // get total clicks number from the server somehow and 
// assign it to var totalClicks;
    document.getElementById("totalClicks").innerHTML = totalClicks;
    ??? = ??? + 1; // add 1 to total clicks number and save it to server.
}​;​
</script>
<input id="buttonToClick" type="submit" name="button" value="enter"/>
<a>The button is clicked <a id="totalClicks"></a> times!</a>

可以用Javascript做到这一点吗?

您必须使用 AJAX 将数据POST到服务器,因为您使用的是 jQuery,因此您可以使用 $.ajax 函数。

举个例子:

$(document).on("click", "#buttonToClick", function() {
   uploadClickCount();
});
function uploadClickCount()
{
    var userId = $("#UserId").val(); // Get the user id first
    var totalClicks = $("#totalClicks").val();
    $.ajax({
        url: 'YourWebsite/ClickCounter',
        type: "POST",
        data: { user: userId, clickCount: totalClicks },
        success: function() { }
        error: function() { alert('Unable to connect to the server'); }
    });
}

保存对服务器的调用的另一种方法是在用户离开页面或使用window.unload方法关闭页面时尝试发送总点击次数,但这可能不可靠。

您还可以考虑将点击计数存储在本地存储中HTML 5然后在用户返回时/一旦DOM准备就绪时上传它,即 $(document).ready(function() { });

最佳做法

是存储用户上次尝试联系服务器的时间,然后可以使用它在 10 秒延迟后调用 AJAX 调用,这将防止服务器端的大量请求。