使用php variabe的JavaScript无效

时间:2016-06-22 20:55:52

标签: javascript php html

我刚接触使用php html和javascript,所以我很抱歉,如果这个问题很糟糕,但每当我添加这个变量,echos php我再也无法将程序推进到下一个窗口了。我唯一能想到的是下一个窗口是一个html而不是一个php文件。这是原因还是我做错了什么?谢谢!

<script>
    var winner = <?php echo $winnerName ?>;
    //Creates random num for winner base on num of members.
    function changeNum() {
        //Num of members.
        num = document.getElementById("num").value;
        //winner.
        num2 = Math.round((Math.random() * (num - 1) + 1));
        //Storage to second page
        localStorage.setItem("winner", num2);
        localStorage.setItem("name", winner);

        window.location = "second_page.html";
    }
</script>

2 个答案:

答案 0 :(得分:1)

PHP将以纯文本形式打印出你的字符串,如果你要在文件本身中输入$winnerName所保存的字符串,那么它将完全匹配。

例如,如果$winnerName = 'Bob'浏览器会看到var winner = Bob;并抱怨您没有定义变量Bob

记住这一点,有两种方法可以使javascript将字符串视为字符串,而不是变量。

  1. var winner = <?php print json_decode($winnerName); ?>;
  2. var winner = '<?php print $winnerName; ?>'
  3. 两者都将显示在浏览器var winner = 'Bob'

答案 1 :(得分:-1)

一些潜在的问题:

  1. $winnerName可能是一个字符串,这意味着你需要将它包装在引号中:'<?=$winnerName;?>'(并且可能为了安全起见而将其转义):{{1 }

  2. 确保'<?=addslashes($winnerName);?>'是一个合法的整数:num,以防可能引发错误。

  3. 此外,您还需要查看控制台以查看正在抛出的javascript错误 - 它将为您缩小问题范围。