Подтвердить что ты не робот

Что произойдет, если поле действия в форме <form> имеет параметры?

Есть ли хорошо поддерживаемое общее поведение, которое я могу ожидать, если я сделаю что-то подобное в HTML:

<form method="get" action="/somePage.html?param1=foo&param2=foo">
  <input name="param2"></input>
  <input name="param3"></input>
</form>

Похоже, что такая штука по своей сути смехотворна, но я видел, как она использовалась здесь и там, и мне было интересно, что на Земле должно быть ожидаемое поведение. Являются ли браузеры достаточно умными, чтобы придерживаться "& param2 = any & param3 = whatever" для действия, или они просто бросают второй знак вопроса? Или что? Существуют ли случаи, когда это действительно правильный способ сделать что-то?

4b9b3361

Ответ 1

Если атрибут метода установлен в GET, браузер отбрасывает параметры запроса из атрибута действия перед построением значений аргумента формы.

Итак, в вашем примере запрос на сервер на submit будет выглядеть так: /somePage.html?param2=value&param3=value

Таким образом, нет, когда метод "GET", как в вашем примере, нет причин для этого.

Ответ 2

Не уверен, но я считаю, что лучше использовать эти переменные в скрытых полях ввода. Таким образом, не имеет значения, является ли ваш метод проводки POST или GET.

<form method="get" action="/somePage.html">
  <input name="param2"></input>
  <input name="param3"></input>
  <input type="hidden" name="param1" value="foo" />
  <input type="hidden" name="param2" value="foo" />
</form>

Ответ 3

Вы можете изменить атрибут метода в форме на "POST" с помощью script перед публикацией формы, поэтому в строке запроса может быть использовано для строки запроса. Это вряд ли кажется лучшим решением для чего угодно.

Ответ 4

Ну, на все вопросы был дан ответ, за исключением последнего, на который ответ да. Для POST это разрешено, но вы вполне можете найти случаи, когда он не работает. Я видел веб-серверы, которые разрешают только postdata или querystring, поэтому они не надежны.