Bri*_*ian 48 forms hidden-field
拥有一个具有多个具有相同名称的"隐藏"控件元素的HTML表单是否合法?我希望在服务器上获取所有这些元素的值.如果是合法的,主流浏览器是否正确实现了行为?
Sam*_*son 26
不同的服务器端技术会有所不同.使用PHP,您可以使用数组样式语法来强制在服务器端创建集合.如果发布到服务器,$_POST['colors']
将是一个包含两个值的数组,#003366
并且#00FFFF
:
<input type="hidden" name="colors[]" value="#003366" />
<input type="hidden" name="colors[]" value="#00FFFF" />
Run Code Online (Sandbox Code Playgroud)
一般来说,您需要使用不带方括号的标准名称.大多数服务器端技术都能够解析结果数据,并提供某种类型的集合.Node.js通过querystring.parse
以下方式提供有用的功能:
const querystring = require('querystring')
querystring.parse('foo=bar&abc=xyz&abc=123') // { foo: 'bar', abc: ['xyz', '123'] }
Run Code Online (Sandbox Code Playgroud)
Dav*_*cia 19
如果您有这样的事情:
<input type="hidden" name="x" value="1" />
<input type="hidden" name="x" value="2" />
<input type="hidden" name="x" value="3" />
Run Code Online (Sandbox Code Playgroud)
您的查询字符串将看起来像x=1&x=2&x=3
......根据您用来解析查询字符串的服务器软件,这可能不会很好.
是的,大多数应用程序服务器将收集匹配的元素并用逗号连接它们,这样的形式如下:
<html>
<form method="get" action="http://myhost.com/myscript/test.asp">
<input type="hidden" name="myHidden" value="1">
<input type="hidden" name="myHidden" value="2">
<input type="hidden" name="myHidden" value="3">
<input type="submit" value="Submit">
</form>
</html>
Run Code Online (Sandbox Code Playgroud)
...将解析为URL(在GET情况下 - POST将以相同的方式工作),如下所示:
http://myhost.com/myscript.asp?myHidden=1&myHidden=2&myHidden=3
...并会在这样的代码中暴露给你:(例如,像Response.Write(Request.QueryString("myHidden"))之类的东西:
1,2,3
因此,要获取值,您只需拆分字符串并将其作为数组访问(或者使用您选择的语言进行比较).
(应该澄清一下:在PHP中,它略有不同(正如Johnathan所指出的,括号表示法将项目作为数组公开给你的PHP代码),但ASP,ASP.NET和CF都将这些值公开为以逗号分隔的列表.所以是的,重复的命名是完全有效的.)
归档时间: |
|
查看次数: |
44362 次 |
最近记录: |