Передача данных с PHP на JavaScript

У меня есть простая переменная php, которую мне нужно переносить на часть javascript.

Код:

<?php if ($p == 'home') { $selected == '0'; } if ($p == 'music') { $selected == '1'; } if ($p == 'videos') { $selected == '2'; } if ($p == 'search') { $selected == '3'; } if ($p == 'about') { $selected == '4'; } if ($p == 'contact') { $selected == '5'; } ?> <script type="text/javascript"> //SYNTAX: tabdropdown.init("menu_id", [integer OR "auto"]) tabdropdown.init("colortab", $selected) <-- $selected is the variable I want to carry over </script> 

Related of "Передача данных с PHP на JavaScript"

Прежде всего

 <?php $map = array( 'home' => 0, 'music' => 1, 'videos' => 2, 'search' => 3, 'about' => 4, 'contact' => 5 ); $selected = $map[$p]; ?> 

И я бы рекомендовал просто использовать некоторую переменную, например:

 ?> <script type="text/javascript"> var data = { /*something that you want to pass to the script */ }; </script> <?php 

И затем, ниже, когда вы включаете свои внешние JS-файлы (они должны быть правы перед закрытием тега), вы можете проверить внутри файлов, если установлены переменные data . И затем действуйте по этим данным.

Это то же самое, что и любой другой фрагмент текста.

 tabdropdown.init("colortab", <?php echo $selected; ?>) 

Поскольку это значение является одним из множества известных значений, которые являются всеми числами, ему не требуется экранирование или цитирование.

Хотя вышеупомянутые решения помогут, вам потребовалось бы, чтобы JavaScript встроил ваш HTML / PHP-файл (который, если у вас есть).

Если у вас есть отдельный файл js, вам нужно будет использовать другой подход.

Храните его в скрытой переменной HTML:

 <input type="hidden" id="ColorTabSelected" value="<?php echo($selected);?>"> 

Тогда в вашем js

 var selected = document.getEelementById("ColorTabSelected").value; tabdropdown.init("colortab", selected); 

В общем, я считаю этот подход предпочтительным в любом случае, он способствует разделению и означает, что у вас нет исполняемого модуля кода, который является изменяемым и динамичным. Это означает, что вы можете эффективно изолировать его для модульного тестирования.

 <?php $p = 'home'; $map = array( 'home' => '0', 'music' => '1', 'videos' => '2', 'search' => '3', 'about' => '4', 'contact' => '5' ); $selected = isset($map[$p]) ? $map[$p] : $map['home']; ?> <script type="text/javascript"> tabdropdown.init("colortab", <?=$selected?>) </script> 

Попробуйте:

 <?php $yourVar = "hello"; ?> <script> var yourVar = "<?php echo $yourVar ?>" </script>