В настоящее время я повторяю некоторые переменные в скрытых полях ввода и читаю их с помощью Javascript всякий раз, когда мне это нужно.
Я и коллега теперь думают о создании дополнительного файла Javascript с PHP, который содержит только все переменные для Javascript. Таким образом, переменные уже существуют и нет дополнительного кода в HTML.
Каковы хорошие способы передачи переменных с PHP на Javascript? И как звучит наше решение?
Обычно используемый формат обмена для JavaScript – JSON , используя json_encode
. Файл PHP такой:
<?php $data = array("test" => "var", "intvalue" => 1); echo json_encode($data); ?>
затем возвращает литерал объекта JavaScript следующим образом:
{ "test" : "var", "intvalue" : 1 }
Вы можете прямо отсылать его в переменную JavaScript на своей странице, например:
var data = <?php echo json_encode($data)?>;
… или запросить его через Ajax (например, с помощью jQuery getJSON ).
Если вам просто нужно вывести строку в атрибут тега, используйте htmlspecialchars
. Предполагая переменную:
<?php $nifty = "I'm the nifty attribute value with both \"double\" and 'single' quotes in it."; ?>
… вы можете вывести его так:
<div data-nifty-attr="<?php echo htmlspecialchars($nifty)?>">...</div>
… или если вы используете короткие теги:
<div data-nifty-attr="<?= htmlspecialchars($nifty)?>">...</div>
<?php $my_php_var = array(..... big, complex structure.....); ?> <script type="text/javascript"> my_js_var = <?=json_encode ($my_php_var)?>; </script>
Я использую для эха их всех вместе во главе HTML. Кажется достаточно чистым для моих нужд 🙂
Есть три способа сделать это:
<?echo "var user = '$user';";?>
. Работает, но это грязно.