页面刷新时的Javascript函数触发器

页面刷新时的Javascript函数触发器,javascript,php,html,Javascript,Php,Html,我有一个超链接,点击该链接将运行JavaScript函数。我还有一个PHP变量$counter。在JavaScript函数中,$counter的值增加1,即$counter++。它很好用。但每当刷新页面时,同样的函数也会运行。因此,每当刷新页面时,$计数器的值都会增加1。我尝试了网络上所有可用的解决方案,如preventDefault()、ClickEventHandler等,但都不起作用。请帮忙解决这个问题。在下面的代码中,我将$counter设置为0。但它以1作为输出加载。我希望它仅在单击超

我有一个超链接,点击该链接将运行JavaScript函数。我还有一个PHP变量$counter。在JavaScript函数中,$counter的值增加1,即$counter++。它很好用。但每当刷新页面时,同样的函数也会运行。因此,每当刷新页面时,$计数器的值都会增加1。我尝试了网络上所有可用的解决方案,如preventDefault()、ClickEventHandler等,但都不起作用。请帮忙解决这个问题。在下面的代码中,我将$counter设置为0。但它以1作为输出加载。我希望它仅在单击超链接时计数。这是我的示例代码

    <?php
session_start();
require("dbconfig.php");
$counter=0;
?>
<html>
<head>  
<script>
function onclick() {     
  <?php 
   $counter++;   
  ?>    
}
</script>
</head>

<body>
<a href="" type="button" onclick="check()">link text</a>
</body>

  <?php 
  //tracing counter value
    echo $counter;
    ?>  
</html>

函数onclick(){
}

TL;医生:

您不能混合使用PHP和JS代码,期望JS函数执行PHP代码

首先PHP准备输出到浏览器,然后浏览器解析JS和HTML。JS从来不知道PHP代码

单击CTRL+U以查看浏览器看到的源代码-没有PHP代码


页面刷新时未运行JS函数。PHP代码在页面刷新时运行

首先是PHP解析器:

session_start();
require("dbconfig.php");
$counter=0;
$counter++;
echo $counter;
然后是JS/Html解析器

此时,您的JS代码如下所示:

function onclick() {
}
函数的内容为空,因为您没有从PHP端输出任何内容


要修复此问题,请将PHP var移动到JS var:

<?php
session_start();
require("dbconfig.php");
$counter=0;
?>
<html>
    <head>  
        <script>
            var jsCounter = <?= $counter; ?>

            function onclick() {     
                jsCounter++;

                console.log(jsCounter);
            }
        </script>
    </head>

    <body>
        <a href="" type="button" onclick="check()">link text</a>
    </body>
</html>

var jsCounter=
函数onclick(){
jsCounter++;
console.log(jsCounter);
}


请注意,关闭主体标签后,切勿输出。

您是否也可以提供该功能?您的代码在哪里?请添加代码……您需要发布代码。但我认为这个解决方案在设计上有缺陷。刷新页面后,Javascript将不会有任何持久数据,除非您使用
sessionStorage
localStorage
。我已经用示例代码更新了文章。我已将$counter设置为0。但它以1作为输出加载。我希望它只在点击超链接时计数。非常感谢您的解决方案。有没有办法在增量后将jsCounter值分配回$counter?因为我想在数据库中存储$counter值。我尝试了这个方法,但没有成功。但正如您所说,首先PHP准备输出到浏览器。因此,有可能在最后用php($counter)响应jsCounter(javascript)增加的值吗?@Rajesh不,JS不能将值赋回php。您可以使用会话来存储值,以便在刷新后将其持久化。通常PHP和JS通过Ajax请求进行“对话”