我需要暂时将值存储在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>
注意:
$currentRating
变量不为null,我尝试将其包含在alert函数中,并返回正确的值。
$currentRating
变量转换为int:
settype($currentRating, "integer");
(int)$currentRating;
什么都没发生,它仍然返回Zero。有谁知道如何解决这个问题?非常感谢那些愿意帮助的人。
答案 0 :(得分:3)
PHP在服务器上运行,因此您的JavaScript实际上看起来像:
function rate(amnt) {
alert(0)
令人惊讶的是,它最终适用于最后失踪的}
......
关键是,你不能以这种方式混合PHP和JS。你为什么不这样做alert(amnt*25)
?
答案 1 :(得分:2)
Php代码在发送给用户之前运行。尝试查看已处理页面的来源,了解其工作原理。
答案 2 :(得分: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
答案 3 :(得分:1)
为什么要尝试使用PHP呢?只需在javascript中进行计算:
<script type="text/javascript">
function rate (amnt){
var ratingImageWidth = amnt * 25;
alert(ratingImageWidth);
}
</script>
PHP在浏览器加载页面之前在服务器上运行。加载页面后,Javascript在客户端的浏览器中运行。这两个人不能互相打电话,因为他们在不同的地方跑。