Подтвердить что ты не робот

Какой лучший способ передать переменную PHP в Javascript?

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

Я и коллега теперь думают о создании дополнительного файла Javascript с PHP, который содержит только все переменные для Javascript. Таким образом, переменные уже существуют и в HTML не добавляется дополнительный код.

Каковы хорошие способы передачи переменных с PHP на Javascript? И как звучит наше решение?

4b9b3361

Ответ 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-запрос.
  • Что вы делаете, передавая их, создавая скрытые поля форм, а затем читайте их.