从自我调用中阻止javascript函数

时间:2018-04-04 14:13:16

标签: javascript php html5

我是php和javascript的初学者 我正在使用会话变量来持有一个计数器 在下一个按钮单击我想增加计数器和上一步按钮单击我想减少计数器,我想稍后重新加载页面,问题是自动调用javascript函数而不通过按钮单击调用。 这使得f1和f2都被称为使计数器值无效。 我想阻止自我调用。

  <button type="button" onClick="f1();" id="prev"><< Prev</button>
  <button type="button" onClick="f2();" id="next">Next >></button>

<script>
function f1(){
<?php $_SESSION['counter']= $_SESSION['counter']-1?>
window.location.reload();
} 

 function f2(){
  <?php $_SESSION['counter']= $_SESSION['counter']+1?>
  window.location.reload();
} 

</script>

谢谢。

1 个答案:

答案 0 :(得分:1)

无法在JS函数中运行PHP代码。 (确切地说:正如你在评论中看到并阅读的那样,这是可能的,但是 - 在这种情况下 - 没有你想要的效果。)这是不可能的,因为JS是在客户端上运行的,但是PHP在服务器上运行(因此,在用户查看页面之前)。

除此之外,您可以使用AJAX将更改传输到服务器,或使用链接或公式使用GET / POST请求,这更慢,但更容易:

<a href="?action=prev">&lt;&lt; Prev</a>
<a href="?action=next">Next &gt;&gt;</a>

要在PHP中使用该信息,请使用以下代码:

<?php
if(isset($_GET["action"])) {
    switch($_GET["action"]) {
        case "prev":
            $_SESSION["counter"]--;
            break;
        case "next":
            $_SESSION["counter"]++;
            break;
    }
}

顺便说一句:逃脱“&lt;”和“&gt;”在HTML代码中,它的风格很好,可以防止你遇到问题。

另一种方法是使用sessionStorage来保存客户端中的值,正如@Skwal指出的那样,如果你不需要服务器上的值或想要每次使用AJAX或GET /时传递它POST。