2016-06-22 63 views
1

我是新來的使用PHP的HTML和JavaScript,所以我很抱歉,如果這個問題是壞的,但每當我添加這個變量,回聲PHP我不能再提前到下一個程序窗口。我能想到的唯一的事情就是下一個窗口是一個html而不是一個php文件。這是原因還是我做了其他錯誤?謝謝!JavaScript與PHP variabe不工作

<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> 
+0

試試這個var winner ='<?php echo $ winnerName?>'; – user3510665

+0

'$ winnerName'的價值是什麼?如果它是一個字符串(看起來是這樣),你需要用引號將它包裝起來:''<? echo $ winnerName;?>'' - 另外,請注意,您也可以跳過'echo',只是執行'<?= $ winnerName;?>' –

+1

[Include PHP within JavaScript(.js)files] (http://stackoverflow.com/questions/3241422/include-php-inside-javascript-js-files) – YakovL

回答

-1

一對夫婦的潛在問題:

  1. $winnerName可能是一個字符串,這意味着你需要用它的報價:'<?=$winnerName;?>'(也可能逃脫它,以及要對安全側):'<?=addslashes($winnerName);?>'

  2. 確保num是一個合法的整數:parseInt(document.getElementById("num").value),以防萬一可能會引發錯誤。

此外,你會想看看你的控制檯,看看什麼是JavaScript錯誤正在拋出 - 它會縮小你的問題。

+0

1.是問題的感謝! –

1

PHP會以純文本格式打印出你的字符串,如果你想在文件本身中輸入和硬編碼$winnerName所保存的字符串,它將會非常像。

例如,如果$winnerName = 'Bob'瀏覽器將會看到var winner = Bob;並且抱怨說您沒有定義變量Bob

記住這一點,有兩種方法可以使JavaScript將字符串視爲字符串,而不是變量。

  1. var winner = <?php print json_decode($winnerName); ?>;
  2. var winner = '<?php print $winnerName; ?>'

這兩者將顯示到瀏覽器var winner = 'Bob'

+1

N.B.你應該幾乎從不使用第二種方式。這很危險。報價將打破它,反斜槓將混亂它。 – mpen