Отправить как POST и GET в форме - PullRequest
11 голосов
/ 18 января 2011

Мне нужно, чтобы форма отправляла запросы POST и GET (из-за некоторых ошибок в IE и iframes), как вы можете это сделать?

Отправляемые данные не являются мега-безопасными, поэтому не имеет значения, могут ли они быть установлены с помощью GET, просто нужно убедиться, что они установлены в обоих направлениях.

Спасибо за помощь!

Ответы [ 4 ]

30 голосов
/ 18 января 2011

Легко: просто укажите данные GET в URL-адресе формы.

<form method="POST" action="form.php?a=1&b=2&c=3">

однако, очень внимательно проверьте, как данные используются в получающем скрипте. Не используйте $_REQUEST - скорее разберите $_GET и $_POST в соответствии с вашими потребностями и в порядке приоритета, в котором они вам нужны.

9 голосов
/ 18 января 2011

Заставьте форму выполнить обычную процедуру POST и используйте JavaScript для репликации значений в строке запроса:

HTML:

<form id="myform" method="post" action="..." onsubmit="process()">
  ...
</form>

JavaScript:

function process() {
  var form = document.getElementById('myform');
  var elements = form.elements;
  var values = [];

  for (var i = 0; i < elements.length; i++)
    values.push(encodeURIComponent(elements[i].name) + '=' + encodeURIComponent(elements[i].value));

  form.action += '?' + values.join('&');
}
4 голосов
/ 18 января 2011

Не знаю, какую ошибку вы пытаетесь обойти, но вы можете использовать jQuery , чтобы легко изменить действие формы, чтобы оно содержало опубликованные значения:

Сценарий:

function setAction() {
    $("#myform").attr("action", "/path/to/script/?" + $("#myform").serialize());
}

HTML:

<form id="myform" action="/path/to/script/" method="post" onsubmit="setAction()">
2 голосов
/ 18 января 2011

форма должна быть указана после получения в URL

<form method="post" action="http://www.yourpage.php?firstparam=1&sec=2">
.
.
</form>
...