#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;
Я надеюсь, это то, что вы ищете.