Что произойдет, если поле действия в форме <form> имеет параметры?
Есть ли хорошо поддерживаемое общее поведение, которое я могу ожидать, если я сделаю что-то подобное в HTML:
<form method="get" action="/somePage.html?param1=foo¶m2=foo">
<input name="param2"></input>
<input name="param3"></input>
</form>
Похоже, что такая штука по своей сути смехотворна, но я видел, как она использовалась здесь и там, и мне было интересно, что на Земле должно быть ожидаемое поведение. Являются ли браузеры достаточно умными, чтобы придерживаться "& param2 = any & param3 = whatever" для действия, или они просто бросают второй знак вопроса? Или что? Существуют ли случаи, когда это действительно правильный способ сделать что-то?
Ответы
Ответ 1
Если атрибут метода установлен в GET, браузер отбрасывает параметры запроса из атрибута действия перед построением значений аргумента формы.
Итак, в вашем примере запрос на сервер на submit будет выглядеть так: /somePage.html?param2=value¶m3=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, поэтому они не надежны.