#javascript #php
#javascript #php
Вопрос:
Контекст
Я пытаюсь передать переменную PHP в javascript.
Что я сделал
У меня есть следующая функция, которая используется для оповещения переменной PHP (здесь значение массива)
<script type="text/javascript">
function validate(){
alert('<?php echo $array_temp[1]; ?>');
}
</script>
И соответствующий html.
<label class="checkbox-inline"><input type="checkbox" id="Hypothesis Testing" name="Hypothesis Testing" onclick="validate()">Hypothesis Testing (3)</label>
Это не работает. Предупреждение есть, но содержимое пустое.
Если я просто сделаю это (где-нибудь в моем html-документе):
<?php echo $array_temp[1]; ?>
Он выводит содержимое переменной ($array_temp[1] ).
Что я пробовал
Многие вещи:-( Я играл с «и » и пытался кодировать json.
Комментарии:
1. просто поместите javascript в свой html-документ
2. Сработало!!!!!!!!
Ответ №1:
Лучший и рекомендуемый способ передачи переменной PHP (серверного языка) в javascript — это использование rest API
PHP-код
<?php
header('Content-Type: application/json');
echo json_encode($array_temp, JSON_HEX_APOS | JSON_HEX_AMP);
с URL /myapi/url
Получите его в ajax-запросе с помощью fetch, axios, ajax (jquery), …
Javascript
fetch('/myapi/url').then(function(data){
return data.json();
}).then(data => {
alert(data);
})
Комментарии:
1. Хотя этот подход верен, он не отвечает на вопрос. Хитрость заключается в правильном цитировании, в зависимости от того, куда вставляется значение.
json_encode
может избегать апостроф и сохранять необработанные кавычки, он также может избегать<
,>
, иamp;
не нарушать HTML-код. Например, если вы хотите вставить значение непосредственно в атрибут HTML, затем заключите атрибут в апострофы и используйтеJSON_HEX_APOS | JSON_HEX_AMP
в качестве второго параметра.2. Не забуду
JSON_HEX_TAG
иJSON_HEX_QUOT
.3.
JSON_HEX_TAG
иJSON_HEX_QUOT
не являются необходимыми в значении атрибута HTML, цитируемом апострофами. Фактически, использование апострофов позволяет эффективно представлять кавычки и значительно уменьшает размер объектов в JSON.