захват значений POST с помощью javascript

#php #javascript #html #forms #post

#php #javascript #HTML #формы #Публикация

Вопрос:

Простите, что задаю, казалось бы, очевидный вопрос, но все мои поиски сводятся к поиску руководств о том, как создавать значения POST с помощью JS, а не о том, как их получать (и использовать).

Что я хочу сделать:

step1.php — формирование POST для step2.php

step2.php — также форма, JS получает одно конкретное значение POST и выполняет с ним некоторую работу, затем соответствующим образом обновляет эту новую форму

по причинам, в которые не стоит вдаваться, процесс должен состоять из 2 шагов / / 2 страниц.

Очевидное решение — просто сделать что-то вроде:

 <script type="text/javascript">

    function damn_ugly () {

        var shameful = <?php echo $_POST['desiredDatum']; ?>;
        do more stuff...
    }

</script>
  

но мне это кажется немного грязным.

Есть ли способ лучше? или это действительно то, как я должен это делать?

Комментарии:

1. есть какая-либо конкретная причина, по которой вы не можете создать первое step1.php страница должна быть динамичной и выполнять публикацию в ajax, чтобы step2.php возвращает некоторые данные, которые может использовать какая-либо функция javascript? Это прерывает ваш «процесс 2step / 2page», но, похоже, это лучшее решение, если вам не нравится форматирование, указанное выше…

2. Честно говоря, объединить функциональность этих двух форм в одну просто за пределами моих нынешних возможностей, и я являюсь единственным программистом на рассматриваемом сайте. Я только делаю свои первые неуверенные шаги по добавлению дополнительных улучшений javascript в прочную основу PHP и очень стараюсь не откусывать больше, чем могу прожевать. 🙂

3. взгляните на jQuery и некоторые из их примеров… Вы обнаружите, что это НАМНОГО проще, чем вы подозреваете.. один вызов, и он отправляет ваши данные (которые были упакованы в массив JS) в вашу PHP-форму (которую вы уже знаете, как использовать), а затем возвращает функции JS любые данные, которые вы настроили для вывода из php-формы. docs.jquery.com/Main_Page

Ответ №1:

 var postData = <?php echo json_encode($_POST); ?>;
  

Очевидно, вы можете изменить это, чтобы включить только определенные поля из $_POST , передав пользовательский массив в json_encode .

 var desiredDatum = <?php echo json_encode($_POST['desiredDatum']); ?>;
  

Лучшего способа сделать это нет — и использование json_encode гарантирует, что независимо от того, что содержится в переменной POST, ничего не сломается (по крайней мере, не во время назначения).

Комментарии:

1. извините за дотошность, но не могли бы вы уточнить свой ответ каким образом?

Ответ №2:

Как вы должны это делать, JavaScript не может получить доступ к значениям POST другим способом.

Конечно, вы можете сделать это немного красивее: пусть ваш php-скрипт поместит переменные POST в массив и распечатает массив в формате JSON. Теперь ваш javascript имеет массив.

Ответ №3:

Значения POST отправляются на сервер. После отправки только сервер может работать с этими значениями. Ваш пример — практически единственный вариант, который у вас есть для «доступа» к значениям POST, которые были отправлены на сервер в предыдущем запросе.

Ответ №4:

JS не имеет доступа к значениям POST, он может извлекать только значения GET. Однако, поскольку вы используете PHP-скрипт и можете передавать данные в JS — почему бы не предоставить данные ваших функций JS в формате JSON? Вы можете использовать функцию PHP json_encode для кодирования всех значений POST в JSON, которые затем вы можете легко использовать в своем JS-коде.

Ответ №5:

Попробуйте это на втором шаге, страница 2:

Установите скрытое текстовое поле на странице:

 <input type='hidden' name='text1' id = 'text1' value='<?php echo $_POST['desiredDatum']; ?>' />
  

Теперь, если вы используете jQuery, приведенная ниже схема кода

 $(document).ready(function() {

var shameful = $('#text1').val();

});
  

если не использовать jQuery, то

 var shameful = document.getElementById('text1').value;
  

Я надеюсь, это то, что вы ищете.