Как можно обнаружить сообщение php с помощью javascript?
Моя ситуация
У меня есть фрагмент javascript, который выполняет несколько манипуляций с веб-формой на form.php . Форма имеет значение action="form.php"
и, таким образом, загружается при отправке. Веб-форма создается только if (!isset($_POST['submit']))
, поэтому после публикации элементов ввода и контейнеров, составляющих веб-форму, там нет. Как правило, код структурирован следующим образом:
<?php if (!isset($_POST['submit'])) {
//the form has not been submitted
?>
<form action="<?php $_SERVER['PHP_SELF']?>" method="post" id="form" name="form">
<!-- general input elements -->
<input type="submit" name="submit" value="Send">
</form>
<?php }
else {
// the form has been submitted
// posted values are submitted to a database
}
?>
Однако javascript все еще пытается выполнять манипуляции с этими элементами. Поскольку их больше нет, ошибки происходить. Я мог бы использовать кучу операторов if (HTMLElement)
для каждой манипуляции с определенным элементом HTML, но я надеюсь, что есть более надежное, более общее решение.
Вопрос
Учитывая, что форма отправляется на свою страницу и что невозможно просто продолжать показывать форму после публикации, у вас есть предложение, как я могу обнаружить публикацию веб-формы и отключить определенные части моего javascript?
Более общим вопросом было бы:
Как php может СООБЩЕНИЕ будет обнаружено с помощью javascript?
1 answers
Одна вещь, которая приходит на ум, это что-то вроде этого:
<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') $isPost = true; ?>
// later on in your script
<?php if (!$isPost): ?>
<script type="text/javascript">
// the JS code that manipulates your form
</script>
<?php endif; ?>
В принципе, если форма была опубликована, не отображайте код JS, который управляет ею. Если этот код смешан с другим кодом, который вы всегда хотите включить, вам придется работать с ним немного по-другому. В этом случае вы могли бы попробовать:
<script type="text/javascript">
var isPost = <?php echo $isPost ? 'true' : 'false' ?>;
if (!isPost) {
document.getElementById('blah').doSomething();
}
</script>