Какой лучший способ передать переменную PHP в Javascript?
Я в настоящее время повторяю некоторые переменные в скрытых полях ввода и читаю их с помощью Javascript всякий раз, когда мне это нужно.
Я и коллега теперь думают о создании дополнительного файла Javascript с PHP, который содержит только все переменные для Javascript. Таким образом, переменные уже существуют и в HTML не добавляется дополнительный код.
Каковы хорошие способы передачи переменных с PHP на Javascript? И как звучит наше решение?
Ответы
Ответ 1
Передача общих данных
Обычно используемый формат обмена для 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>
Ответ 2
<?php
$my_php_var = array(..... big, complex structure.....);
?>
<script type="text/javascript">
my_js_var = <?=json_encode ($my_php_var)?>;
</script>
Ответ 3
Я использую для эха их все вместе во главе HTML. Кажется достаточно чистым для моих нужд:)
Ответ 4
Есть три способа сделать это:
- Извлеките их непосредственно в источник javascript:
<?echo "var user = '$user';";?>
. Работает, но это грязно.
- Передайте их через запрос ajax. Это самое близкое к тому, что вы можете перейти на собственную переменную, но недостатком является дополнительный HTTP-запрос.
- Что вы делаете, передавая их, создавая скрытые поля форм, а затем читайте их.