Превратите переменную PHP в переменную Javascript и используйте эту переменную Javascript в качестве аргумента в функции Javascript - PullRequest
0 голосов
/ 03 октября 2018

Входные данные из формы на моей странице index.php отправляются на мою страницу search.php.Этот ввод преобразуется в переменную PHP $ q с помощью $ _GET.Как превратить эту переменную PHP в переменную Javascript, которая является строкой?Тогда как мне передать эту строку в качестве аргумента в функции Javascript в теге body при загрузке страницы?Функция onload работает, только если первый параметр является строкой.Вот мой упрощенный код:

<?php

if(isset($_GET["q"])) {
    $q = $_GET["q"];
}

?>

<!DOCTYPE html>
<html>
<head>
 <script src="assets/js/script.js">
     var q = "<?php echo $q;?>";
 </script>
</head>

<body onload="return Search(*PHP variable turned into Javascript string*, otherFunction(), otherFunction2())">

    <div>
    Content
    </div>

</body>
</html>

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Скрипт не работает, потому что вы пытаетесь включить внешний файл JavaScript, но также используете тот же тег для встроенного скрипта.

Эта часть

<script src="assets/js/script.js">
    var q = "<?php echo $q;?>";
</script>

должна выглядеть примерно так

<script src="assets/js/script.js"></script>
<script>
    var q = "<?php echo $q;?>";
</script>

Полностью исправленный код

<?php

if(isset($_GET["q"])) {
    $q = $_GET["q"];
}

?>

<!DOCTYPE html>
<html>
<head>
    <script src="assets/js/script.js"></script>
    <script>
        var q = "<?php echo $q;?>";
    </script>
</head>

<body onload="return Search(q, otherFunction(), otherFunction2())">

    <div>
    Content
    </div>

</body>
</html>

Редактировать: Сноска

Как указывает @ dossy , следует избегать прямой передачи пользовательского ввода в код HTML.Используйте json_encode(), чтобы избежать любого вредоносного кода или неправильного ввода.

<script>
    var q = <?php echo json_encode($q); ?>;
</script>
0 голосов
/ 03 октября 2018

Это то, для чего json_encode().Другие ответы, использующие наивный подход var x = "<?php echo $var; ?>";, прервутся, если, например, $var содержит двойные кавычки.

Это самый безопасный способ сделать это:

<script type="text/javascript">
  var q = <?php echo json_encode($q); ?>;
</script>
0 голосов
/ 03 октября 2018

Javascript внутри вашего тега script должен быть проигнорирован, если для этого есть src.Однако вы не можете предварительно скомпилировать php в js-файл.Один из вариантов - установить переменные javascript в ваших php-файлах, а затем отдельно включить ваши js-файлы.Если ваши js-файлы используют эти переменные, сначала обязательно установите переменные:

<script type="text/javascript">
    var q = "<?php echo $q;?>";
</script>
<script src="assets/js/script.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...