Использование PHP в заявлении IF для javascript

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

<script type="text/javascript"> var answer = confirm('Are you sure?'); if(answer==true) { <?php $confirmation = 1; ?> } else { <?php define("CONFIRMATION", 1, true); ?> } alert('<?php echo $confirmation; ?>') alert('<?php echo defined("CONFIRMATION"); ?>') </script> 

Проблема в том, что даже если я нажму «ДА», подтверждение $ и логическая функция из функции defined () вернутся 1. Независимо от того, что я нажимаю, (отменить или ок), один из них должен быть 0 (я уже объявил $ подтверждение раньше). Но оба коды в блоках if и else! Обычно это работает так

Вы принципиально неправильно понимаете, что делает PHP.

PHP оценивается на сервере до того, как страница будет отправлена ​​в ваш браузер. Когда браузер увидит его и выполнит javascript, все PHP исчезнет.

Используйте «источник просмотра» своего браузера в окне браузера с этим кодом. Вы увидите, что это выглядит так:

 <script type="text/javascript"> var answer = confirm('Are you sure?'); if(answer==true) { } else { } alert('1') alert('1') </script> 

Вам либо нужно реализовать то, что вы хотите сделать в javascript для запуска в браузере, либо вам нужно отправить новый запрос на сервер и получить новую страницу назад (прямо или косвенно) с ответом.

Это никогда не сработает, потому что PHP обрабатывается до отправки в браузер. Если вам действительно нужно что-то изменить в PHP, попробуйте использовать вызов AJAX.

http://ajaxpatterns.org/XMLHttpRequest_Call

Или попробуйте использовать jQuery $.ajax(); функция. Начните с просмотра здесь .

Вот краткий пример:

 <script type="text/javascript"> var answer = confirm('Are you sure?'); $.ajax({ type: 'GET', url: '/path/to/script.php', data: 'answer=' + answer, success: function(response) { alert(response); } }); </script> 

Содержание script.php :

 <?php if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ) { // AJAX request $answer = $_GET['answer']; // ... } 

Вы не можете инициировать вывод кода PHP без запроса post / get. Для ваших нужд вы должны выбрать между подавлением формы или загрузить ссылку на страницу с параметрами, заполненными в строке запроса при подтверждении.

PS параметры строки запроса следующие: «?» в формате variable = value

например:

 index.php?answered=1 

вы сможете получить эти данные по ват. / значениям с помощью переменных PHP $ _POST, $ _GET или $ _REQUEST таким образом, как это:

 if ($_REQUEST['answered'] == 1) { //confirmed ... } 

Вы неправильно понимаете, что произойдет здесь.

Во-первых, PHP выведет слой javascript. Ваш блок if будет выглядеть следующим образом:

 if (answer == true) { } else { } 

Механизм javascript должен затем оптимизировать это и полностью игнорировать его. Подумайте об использовании AJAX, если вам нужно заставить PHP обрабатывать что-то с помощью ввода из слоя javascript.

Обычно это работает так

Нет, он никогда не работает так. PHP выполняется перед javascript, поэтому он никогда не будет работать так.

Я думаю, из того, что я вижу, вы хотели бы что-то вроде

 <a href="?confirmation=1" onclick="return confirm('Are you sure?')">Your link</a> 

Это перейдет на текущую страницу с $_GET['confirmation'] установленным в "1" .

php выполняется перед javascript, поэтому вы не можете этого сделать, потому что, когда вы проверяете его с помощью javascript, если else-оператор php уже выполнен, поэтому вы не можете этого сделать, но вы можете использовать ajax для него