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

183
06 марта 2018, 05:06

Такой вопрос интересный назрел, как и можно ли вообще так сделать, чтобы передать в 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
PHP 7.1 Libevent - Segmentation fault

PHP 7.1 Libevent - Segmentation fault

Приветствую! Раньше все работало, сейчас выходит ошибка, пример скрипта:

145
Помогите прочитать данную функцию

Помогите прочитать данную функцию

Прошу помочь мне прочитать логику данного кода что за что отвечаетЕсли есть желание помочь, пожалуйста, продублируйте данный код в ответ...

158
Не удается передать в массив параметров компонента редактирования формы ID элемента. Bitrix

Не удается передать в массив параметров компонента редактирования формы ID элемента. Bitrix

Подобный вопрос возникал уже на форуме (ссылка) Но все равно не понимаю как использовать этот компонент на редактированиеУ меня уже отфильтрован...

151