1

我需要将值临时存储在 PHP 变量中,因为该值应与注释一起发送。用户不能在不输入评论的情况下发送评分,这就是我决定这样做的原因。

为什么当 PHP 计算值时我的变量返回值为零?

我有这个代码:

<a href='#' onclick='rate(1); return false;' class='one-star'>1</a>

<script type="text/javascript">
     function rate (amnt){
     <?php
         $currentRating = amnt;
         $ratingImageWidth = $currentRating * 25;
         echo "alert($ratingImageWidth)";
     ?>
     }
</script>

笔记:

  • 它输出 0 的警报;
  • $currentRating变量不为空,我尝试将它包含在警报函数中,它返回正确的值。
  • 我尝试了这些将$currentRating变量转换为int:

  • settype($currentRating, "integer");
  • (int)$currentRating;

    什么也没发生,它仍然返回零。有谁知道如何解决这个问题?非常感谢那些愿意提供帮助的人。

  • 4

    4 回答 4

    3

    PHP 在服务器上运行,所以你的 JavaScript 实际上看起来像:

    function rate(amnt) {
        alert(0)
    

    令人惊讶的是,考虑到}最后的失踪,它完全有效......

    关键是,你不能以这种方式混合 PHP 和 JS。你为什么不做alert(amnt*25)呢?

    于 2012-08-19T21:56:45.083 回答
    2

    你为什么要为此使用 PHP?只需在javascript中进行计算:

    <script type="text/javascript">
         function rate (amnt){
             var ratingImageWidth = amnt * 25;
             alert(ratingImageWidth);
         }
    </script>
    

    PHP 在浏览器加载页面之前在服务器上运行。加载页面后,Javascript 在客户端的浏览器中运行。两人不能互相打电话,因为他们跑在不同的地方。

    于 2012-08-19T21:57:52.420 回答
    2

    PHP 代码在发送给用户之前运行。尝试查看已处理页面的来源以了解其工作原理。

    于 2012-08-19T21:58:06.027 回答
    1
    $ php << EOF
    <?php
    echo amnt * 25;
    EOF
    PHP Notice:  Use of undefined constant amnt - assumed 'amnt' in - on line 2
    
    Notice: Use of undefined constant amnt - assumed 'amnt' in - on line 2
    0
    

    你不能像这样从 JavaScript 运行 PHP。改用 XHR,或坚持使用 JavaScript

    于 2012-08-19T21:57:03.383 回答