то есть:
<form 1>
<input type="hidden" name="url" value="1">
</form 1>
и
<form 2>
<input type="hidden" name="url" value="2">
</form 2>
Это разрешено и действительно?
то есть:
<form 1>
<input type="hidden" name="url" value="1">
</form 1>
и
<form 2>
<input type="hidden" name="url" value="2">
</form 2>
Это разрешено и действительно?
Ответы:
Да, это действительно
Это хорошо
<form name="form1">
<input type="hidden" name="url" value="1">
</form>
<form name="form2">
<input type="hidden" name="url" value="2">
</form>
Это тоже нормально и обычно интерпретируется как массив значений, например {url: [1, 2]}
, в зависимости от того, что делает ваш сервер. В кодировке URL это будет выглядеть так url=1&url=2
.
<form name="form1">
<input type="hidden" name="url" value="1">
<input type="hidden" name="url" value="2">
</form>
Да.
Более того, это важно, если вы имеете дело с группами переключателей.
"Это не хорошо" правильно разбирается во всех известных мне браузерах; если в строке, закодированной для URL-адреса, появятся два URL-адреса, они будут рассматриваться как массив. Попробуйте это в JQuery:
$('<form name="form1">\
<input type="hidden" name="url" value="1">\
<input type="hidden" name="url" value="2">\
</form>').serialize()
и вы получите: "url=1&url=2"
хорошо написанный парсер строки запроса вернет такую структуру json:
{"url":["1", "2"]}
Это строго спецификация? Нет, но ни один из них не создает многострочную строку, экранируя EOL обратной косой чертой, как я сделал выше.
Да - каждый будет отправлять только свои формы.
Если у вас они в той же форме, один будет иметь приоритет над другим, и это недействительно.
РЕДАКТИРОВАТЬ: Как указал Махмудвкс, переопределение происходит только на некоторых языках (например, PHP), поскольку оно не присуще самому HTML.
Чтобы проверить, действительно ли это, создайте свою страницу и протестируйте в W3C здесь:
A) Ваш первый пример в порядке, потому что время отправки форм будет другим:
<form id="1">
<input type="hidden" name="url" value="1">
</form>
<form id="2">
<input type="hidden" name="url" value="2">
</form>
Б) Ваш второй пример тоже хорош, но не стандартная практика кодирования:
<form>
<input type="hidden" name="url" value="1">
<input type="hidden" name="url" value="2">
</form>
Код Java 2 извлекает оба значения:
Map<String,String[]> parmMap = requestObj.getParameterMap();
String input1 = parmMap.get("url")[0];
String input2 = parmMap.get("url")[1];