Как использовать переменную 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>

Возможно ли это?

Ответы

Ответ 1

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

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

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

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

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

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

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

Ответ 2

<script type="text/javascript">
var jvalue = 'this is javascript value';

<?php $abc = "<script>document.write(jvalue)</script>"?>   
</script>
<?php echo  'php_'.$abc;?>

Ответ 3

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

Ответ 4

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

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

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

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

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

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

Ответ 5

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

  • Создайте скрытую форму на странице HTML

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

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

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

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

Ответ 6

Вы можете взять все значения, как это:

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

Ответ 7

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