Как в php в функцию передать аргумент из js?

115
26 октября 2019, 18:40

Такой вопрос интересный назрел, как и можно ли вообще так сделать, чтобы передать в php функцию аргументом js переменную?...

/* файл index.php */ 
<div id="box"></div>
<?php
    function getNum($num){
        return $num*5;
    }
?>
<script>
    var a       = 5;
    var html    = <?php echo getNum(/*как сюда вставить переменную a из js?*/); ?>;
    $('#box').html(html);
</script>

Пытался в getNum просто закрыть php, вставить переменную js и вновь открыть php - но ошибку так бьет. Как правильно это сделать, и можно ли так?

Answer 1

PHP работает с сервером, а Javascript с клиентом, по-этому Вы не можете использовать одну и ту же переменную в скриптах этих двух языков без передачи этой переменной на сервер с клиента. Но, Вы можете указать переменную PHP в переменную JS:

<script type="text/javascript">
  var foo = '<?= $foo ?>';
</script>

Чтобы отправить переменную Javascript в код PHP, Вам надо использовать ajax. Это будет выглядеть как-то так (самый простой пример):

var variableToSend = 'foo';
$.post('file.php', {variable: variableToSend});

На сервере Вы можете получить переменную в массиве $_POST:

$variable = $_POST['variable'];
Answer 2

Нельзя! PHP выполняется на сервере, а js на клиенте. Если результат выполнения js скрипта влияет только на html (то-есть на DOM) в этом нет необходимости, и логику изменений для элементов нужна продолжать писать на js, а если данные нужна обрабатывать на сервере(выполнить действия с базой, сессией, coockies) то-есть результат выполнения js влияет на дальнейшие состояние данных после перезагрузки страницы, то нужна передавать на сервер запросом через ajax или как элемент формы которая будет отправляться юзером.

READ ALSO
Не работает функция mail() в скрипте?

Не работает функция mail() в скрипте?

Есть сервак (CentOS 7) на нём установлена виртуальная машина Битрикс, на которой работает коробка CRMПосле очередного супер мега пупер обновления...

173
как правильно привернуть HBITMAP к make_unique вместе с deleter&#39;ом

как правильно привернуть HBITMAP к make_unique вместе с deleter'ом

Как правильно привернуть HBITMAP к make_unique вместе с deleter'ом, под deleter'ом подразумевается вызов DeleteObject()

161
Почему нету вывода с функции Users.ShowList()? [закрыт]

Почему нету вывода с функции Users.ShowList()? [закрыт]

посмотрите внимательно на эти строки

152