Как использовать переменную JavaScript как переменную PHP?

Я пытаюсь включить переменные JavaScript в PHP-код как переменные PHP, но у меня возникают проблемы с этим. Когда нажимается кнопка, вызывается следующая функция:

<script type="text/javascript"> function addTraining(leve, name, date) { var level_var = document.getElementById(leve); var training_name_var = document.getElementById(name); var training_date_var = document.getElementById(date); <?php $result = "INSERT INTO training(level, school_name, training_date) VALUES('level_var', 'training_name_var', 'training_date_var')" or die("Query not possible."); ?> </script> 

Является ли это возможным?

PHP запускается на стороне сервера. JavaScript запускается на стороне клиента в браузере пользователя, запрашивающего страницу. К тому времени, когда выполняется JavaScript, на сервере нет доступа к PHP на сервере. Пожалуйста, прочитайте эту статью с подробной информацией о кодировании на стороне клиента и на стороне сервера .

Что происходит в двух словах:

  • Вы нажимаете ссылку в своем браузере на своем компьютере под своим столом
  • Браузер создает HTTP-запрос и отправляет его на сервер в Интернете
  • Сервер проверяет, может ли он обрабатывать запрос
  • Если запрос предназначен для PHP-страницы, запущен PHP-интерпретатор
  • PHP-интерпретатор будет запускать весь PHP-код на запрошенной вами странице
  • PHP-интерпретатор НЕ запускает какой-либо JS-код, потому что он не знает об этом
  • Сервер отправит страницу, собранную интерпретатором, обратно в ваш браузер.
  • Ваш браузер отобразит страницу и покажет ее вам.
  • На вашем компьютере выполняется JavaScript

В вашем случае PHP будет писать JS-код на страницу, поэтому он может быть выполнен, когда страница отображается в вашем браузере. К тому времени часть PHP в вашем фрагменте JS больше не существует. Он был выполнен на сервере уже. Он создал переменную $result , содержащую строку запроса SQL. Вы не использовали его, поэтому, когда страница отправляется обратно в ваш браузер, она исчезла. Посмотрите исходный код, когда страница отображается в вашем браузере. Вы увидите, что в позиции, в которую вы помещаете PHP-код, ничего нет.

Единственный способ сделать то, что вы хотите сделать, это либо:

  • сделать перенаправление на PHP-скрипт или
  • сделать вызов AJAX скрипту PHP

со значениями, которые вы хотите вставить в базу данных.

 <script type="text/javascript"> var jvalue = 'this is javascript value'; <?php $abc = "<script>document.write(jvalue)</script>"?> </script> <?php echo 'php_'.$abc;?> 

Кажется, вы запутываете код на стороне клиента и сервера. Когда кнопка нажата, вам нужно отправить (отправить, получить) переменные на сервер, на котором может быть запущен php. Вы можете отправить страницу или использовать вызов ajax для отправки только данных. -дон

PHP работает на сервере. Он выводит некоторый текст (обычно). Затем он обрабатывается клиентом.

Во время и после разбора на клиенте выполняется JavaScript. На этом этапе для скрипта PHP слишком поздно что-либо делать.

Если вы хотите что-то вернуть на PHP, вам нужно создать новый HTTP-запрос и включить в него данные (либо в строке запроса (данные GET), либо в теле сообщения (данные POST).

Вы можете это сделать:

  • Настройка местоположения (только GET)
  • Отправка формы (с помощью FormElement.submit() )
  • Использование объекта XMLHttpRequest (метод, широко известный как Ajax). Различные библиотеки делают некоторые тяжелые работы для вас здесь, например, YUI или jQuery .

Какой бы вариант вы ни выбрали, PHP по сути тот же. Читайте из $_GET или $_POST , запустите свой код базы данных, затем верните некоторые данные клиенту.

У меня была такая же проблема несколько недель назад, как и у вас; но я придумал блестящее решение для обмена переменными между PHP и JavaScript. Это сработало для меня хорошо:

  1. Создание скрытой формы на HTML-странице

  2. Создайте текстовую или текстовую область в этой скрытой форме

  3. После всего вашего кода, написанного в скрипте, сохраните окончательное значение переменной в этом текстовом поле

  4. Используйте строку $ _REQUEST ['textbox name'] в вашем PHP, чтобы получить доступ к значению вашей переменной JavaScript.

Надеюсь, этот трюк будет работать для вас.

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

 $abc = "<script>document.getElementByID('yourid').value</script>"; 

Вы можете делать то, что хотите, но не так. Что вам нужно сделать, так это сделать запрос AJAX от JavaScript обратно на сервер, где отдельный сценарий PHP может выполнять операцию с базой данных.