Как можно обнаружить сообщение 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?

Author: bakkerjoeri, 2012-08-04

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>
 2
Author: drew010, 2012-08-03 22:43:42