nastya97core
@nastya97core
Начинающий программист

Как внутри шаблона передать из js в php?

Здравствуйте. в php через include подключаю файл home.tpl. Внутри этого файла мне нужно как-то сделать вот такое.
<script>
if (screen.width>500) {
	<?php $type = 2; ?>
} else {
	<?php $type = 1; ?>
}
</script>

Я думала, что оно будет работать, но увы - нет...

...
Планшеты имеют разрешение экрана, которое в разы превышает мобильное, однако на них всё равно открываются мобильные версии. Версия на смартфоне и на планшете может кардинально отличаться. На мобильнике у меня полноэкранный слайдер, а на планшете (даже в вертикальном положении) слайдер не нужен, так как всё помещается. Нет возможности разобрать слайдер. Вот такая вот вёрстка.
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Простым языком - дело в том, что:

- сначала PHP код (все что между <?php и ?>) будет выполнен на сервере, и в вашем случае там будет пусто, потому что переменная $type будет существовать только на сервере в момент выполнения этого фрагмента кода, этот код в этом месте ничего не выводит (не делает echo, print, printf и тд).

- далее будет сгенерирована HTML страничка, которая содержит JavaScript код (все что между <script> и </script>), но еще раз - PHP-кода там уже не будет (он выполнился), вместо него будет результат этого выполнения (в вашем случае - пусто, см. выше)

- JavaScript код выполняется браузером, после того как он сгенерирован на сервере и скачан оттуда этим самым браузером. И в браузере ваш скрипт, с учетом что PHP там ничего не напечатал, будет выглядеть вот так:

<script>
if (screen.width>500) {
} else {
}
</script>

Таким путем как вы пытаетесь вы можете передать данные из PHP в JavaScript, например <?php echo $type; ?> выведет в JS значение переменной $type. Обратно из JS в PHP вы так данные не передадите, это как путешествие во времени в 1994й год.

Для передачи данных на сервер используется ajax.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы