отправка формы удаленно (с другой страницы) - PullRequest
1 голос
/ 21 июня 2011

Я просмотрел похожие посты, но не настолько опытен, чтобы определить, относится ли какой-либо ответ, который я прочитал, к моей ситуации.

У меня довольно сложная форма - форма автоматически генерируется на лету из базы данных и работает - заполните ее, отправьте, и все в порядке.

Теперь эта форма в основном (но не совсем) является формой заказа - так что представьте себе возможность заполнить до десяти 10 различных предметов, которые вы хотите (количество и т. Д.), Нажать кнопку отправки и получить квитанцию. Для целей этого примера это означает, что существует страница FORM, которая отправляет пользователя на страницу RECEIPT, когда он нажимает кнопку submit.

Что я хочу сделать, так это разрешить пользователям вообще не иметь дело с этой формой при определенных обстоятельствах. Например, если все, что они делают, это получают виджет (и ничего больше), я хочу, чтобы они могли нажимать кнопку «купить виджет» на странице профиля виджета и переходить непосредственно на страницу ПОЛУЧЕНИЯ, полностью пропуская форму ( так как они не заботятся ни о чем, кроме виджетов).

Итак, в основном, я хочу, чтобы страница виджета могла вызывать страницу формы предварительно заполненной и предварительно отправленной - с заполненными данными, относящимися к виджету. (Я прошу прощения, если я использую неправильную терминологию - она ​​была создана кем-то другим, и я, к сожалению, оставил несколько шагов по очистке / доработке, но не являюсь экспертом в PHP).

Любой совет? Мне бы очень хотелось, чтобы данные оставались вне URL-адреса, если это вообще возможно, хотя, если это увеличит сложность в сто раз, я бы пошел с решением для URL.

Спасибо.


РЕДАКТИРОВАТЬ: (включая код из комментария на ответ @ AJ:)

хорошо, я думаю, что я часть пути туда. у меня есть следующий код:

print '<form name="input" action="order.php" >';
$field_name = 'widget';
/* fill in */
$field_value = '10';
/* fill in */
echo '<input type="hidden" name="'.$field_name.'" value="'.$field_value.'">';
echo '<input type="submit" value="submit" name="submit" />';
print '</form>';

но это НЕ вызывает следующее в форме:

if(isset($_POST['submit'])) { print 'triggering'; } else { print 'not triggering'; } 

Ответы [ 3 ]

1 голос
/ 21 июня 2011

Вы можете создавать свои собственные формы со скрытыми элементами (такими же, как реальная форма, со своими собственными значениями), которые размещаются в том же месте, что и реальная форма.

1 голос
/ 21 июня 2011

Кнопка «Купить виджет» на любой странице, на которой она реализована, при нажатии должна быть в состоянии отправить запрос POST в сценарий действия формы для вашей текущей формы. , Для этого есть несколько вариантов:

  • Предоставьте интеграторам "скрытую" версию вашей существующей формы, добавив кнопку "Купить виджет" ... она по существу реализует все те же поля, но с типами ввода, установленными на hidden, и всеми заполненные значения.

  • Используйте что-то вроде jQuery.ajax () для отправки запроса того же типа, но с использованием javascript вместо скрытых полей формы

0 голосов
/ 21 июня 2011

Форма - это просто метод сбора данных.За кулисами при отправке формы браузер собирает все данные в форме и отправляет их на сервер в виде запроса POST или GET.

Чтобы смоделировать отправку формы, вам просто нужноСоберите все данные так, чтобы ваш сервер их распознал.

Простой способ сделать это так:

<?php
    header( "Location: http://yourdomain.com/checkout.php?<data>" );
?>

Замените данными своей формы следующим образом: Если выиметь поле формы с именем «city» и значением «MyTown», а поле «zipcode» со значением «12345» будет:

city=MyTown&zipcode=12345

Ваш код будет:

header( "Location: http://yourdomain.com/checkout.php?city=MyTown&zipcode=12345" );

Таким образом, вы можете отправлять данные формы на сервер, даже не представляя форму пользователю.

...