Я пытаюсь сделать окно подтверждения, которое захочет, какой 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 для него