Установить значение ввода с помощью переменной php

Я пытаюсь сделать что-то действительно простое. Я знаю, что, вероятно, мне следует использовать ajax, но я просто делаю несколько быстрых тестов.

поэтому у меня есть файл display.php с некоторой переменной, и я хочу отобразить переменную PHP во входном тексте с помощью document.getElementbyID.value = myVariable

//PHP
<?php
$name = 'Patrick';
?>

//HTML
First Name: <input type = "text" id = "fname" name = "fname" value = ""   >

//JS
<script type = "text/javascript">
     var f = <?php echo($name); ?>;
    document.getElementById("fname").value = f;`
</script>

Я продолжаю получать сообщение об ошибке Uncaught ReferenceError: Патрик не определен Не совсем уверен, что не так с моим кодом, он выглядит довольно просто, но он не хочет помещать значение «Патрик» в поле ввода.

Пробовал разные способы записи с помощью '' или с использованием json_encode, но ничего не менял, все равно получая ту же ошибку.

Просто нужно взять его в кавычки. var f= patrick; не получится, var f = 'patrick'; сработает.

Dave S 16.01.2023 04:31

хорошо, я сделал это простым в вопросе, но на самом деле я получаю свое имя $, выполнив $name=$person->name, поэтому я получаю переменную из массива человек

Anasde 16.01.2023 04:33

ему все еще нужно var f = '<?echo ... (либо ', либо " перед <echo). попробуйте заменить свой эхо-код только словом patrick, чтобы понять, что мы имеем в виду, echo() не добавляет кавычки для вас. PHP работает на сервере и выводит текст ДО страница запускается в браузере. Вы можете просмотреть исходный код страницы в браузере, чтобы увидеть это.

Dave S 16.01.2023 04:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Uncaught ReferenceError: Патрик не определен

Это потому, что полученный javascript:

var f = Patrick;

Это означает, что установите f на содержимое переменной Patrick.

Поскольку переменная с именем Patrick не определена, вы получите ошибку неперехваченной ссылки.

Вам нужно поставить Патрика в кавычки следующим образом:

var f = "Patrick"; // <-- Note the "

Обратите внимание: поскольку вы хотите передавать данные из PHP в JavaScript, лучше использовать JSON следующим образом:

var f = <?php echo json_encode((string)$data); ?>;

Это позволяет вам передавать более сложные типы данных¹ И вы получите правильные экранированные строки.

Правильные экранированные строки? Если пользовательский ввод Test " (обратите внимание на двойную кавычку), примитивный подход сломается, потому что результирующий javascript будет:

var f = "Test "";

Это не только ошибка, но и проблема безопасности, поскольку пользовательский ввод может содержать произвольный javascript, который будет выполняться.

¹ просто снимите (string) гипс.

кажется, что это работает, но я получаю SyntaxError: отсутствует) после списка аргументов var f = JSON.parse("<?php echo json_encode($fname); ?>"); Я просто скопировал вашу вещь, так что не знаю, почему она отсутствует

Anasde 16.01.2023 04:43

несколько исправлений, во-первых, не добавляйте кавычки сами, пусть это сделает json_encode, а во-вторых, если вы хотите использовать JSON.parse(), вам действительно нужно дважды закодировать его, вы можете сделать var f = JSON.parse(<?php echo json_encode(json_encode($data)); ?>); - первый json_encode делает действительный json, но не допустимую строку json, а 2nd encode() преобразует его из json в строку с кодировкой json, но, учитывая, что json в любом случае является допустимым javascript, здесь вообще нет необходимости использовать JSON.parse ! вы также можете просто сделать var f = <?php echo json_encode(...);?>;

hanshenrik 16.01.2023 04:44

@hanshenrik Боже мой, ты прав 😂 Я не думал об этом...

Marco 16.01.2023 04:48

@Anasde К сожалению, моя первая версия моего ответа содержала ошибку, на которую правильно указал Ханшенрик. Теперь это должно работать.

Marco 16.01.2023 04:50

Так-то лучше! я не думаю, что приведение к строке - хорошая идея, но сломается, если/когда он попробует что-то другое, кроме строки

hanshenrik 16.01.2023 04:52

Большое спасибо, ребята, я пытался использовать json_encore раньше, но я думаю, что сделал синтаксическую ошибку, теперь все хорошо. Спасибо вам обоим !

Anasde 16.01.2023 04:52

Другие вопросы по теме