Доступ к PHP var из внешнего файла javascript - PullRequest
49 голосов
/ 28 мая 2010

Я могу получить доступ к PHP-переменной с помощью Javascript следующим образом:

<?php
    $fruit = "apple";
    $color = "red";
?>

<script type="text/javascript">
    alert("fruit: " + "<?php echo $fruit; ?>"); // or shortcut "<?= $fruit ?>"
</script>

Но что, если я хочу использовать внешний файл JS:

<script type="text/javascript" src="externaljs.js"></script>

externaljs.js:

alert("color: " + "<?php echo $color; ?>");

Ответы [ 12 ]

0 голосов
/ 06 октября 2017

2017-2018 и выше решение:

Поскольку никто еще не поднял этот вопрос, и я думаю, что никто еще не думал о комбинировании функций base64_encode и json_encode, вы даже можете отправить переменные PHP Array следующим образом:

index.php

<?php
      $string = "hello";
      $array = ['hi', 'how', 'are', 'you'];
      $array = base64_encode(json_encode($array));

Тогда вы можете просто загрузить желаемый js-файл с параметром для строки запроса, например:

echo '<script type="text/javascript" src="js/main.php?string='.$string.'&array='.$array.'">';

Тогда js/main.php будет выглядеть, например, так. Вы можете проверить свои переменные следующим образом:

JS / main.php

    <?php
    if ($_GET['string']) {
        $a = $_GET['string'];
    }
    if ($_GET['array']) {
        $b = $_GET['array'];
    }
    $b = json_decode(base64_decode($b));

    echo 'alert("String $a: + '.$a.'");';
    echo 'alert("First key of Array $array: + '.$b[0].'");';
    exit();
    ?>

При открытии index.php будет выведено следующее. Итак, вы видите, что вы не открываете js/main.php, и вы все еще получаете функциональность javascript от него.

enter image description here

0 голосов
/ 28 мая 2010

Вы не можете сделать это и не пытаться делать это, так как это не рекомендуемый подход, однако вы можете передавать переменные php в качестве параметров функции в функцию, записанную во внешнем js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...