1
moro 2016-01-25 11:18:13 +08:00
这是 php 特有的。
|
2
moro 2016-01-25 11:19:11 +08:00
同事说 java 也是这样玩的。
|
3
zwh8800 2016-01-25 11:35:32 +08:00
这个确实是 php 特有的,能用 json 就用 json 吧
|
4
magicdawn 2016-01-25 11:44:18 +08:00
这个其实看后端怎么处理吧~
例如 Node.js 第三方包 qs, 也是这么玩的 https://github.com/ljharb/qs#parsing-arrays |
5
DualWield 2016-01-25 11:50:21 +08:00
问题是如果是 checkbox 类型的 input 呢? name 必须是 XXX[] 吧
|
6
alex321 OP |
7
eoo 2016-01-25 11:56:43 +08:00 via Android
一般你这种方式只用在 checkbox 类型的 input
|
8
dapang1221 2016-01-25 12:05:00 +08:00
没用过这么蛋疼的方法,向来都是 ajax 一段 json ,然后返回一个跳转地址。一来用户体验会好,二来就是项目里任何一个人被外星人抓走了,都能立即找到人接替……
|
9
iugo 2016-01-25 12:05:10 +08:00
PHP 可以不用 `[]` 获取提交过来的数组.
用 php://input 看一下就知道了. |
10
x537196 2016-01-25 12:08:37 +08:00 1
java 新手表示暂时没有见过有人这样用
|
11
marvinwilliam 2016-01-25 12:10:26 +08:00
= = java 后端跟我说接不到这样的数组,然后我就把数组改成字符串给他们了。。。
|
12
okampfer 2016-01-25 13:26:54 +08:00
@dapang1221 你的意思是把 html form 格式化为 json 然后再发送给服务器?
|
13
alex321 OP @iugo 刚测试过了。
<form action="/welcome/formTest.html" method="post" accept-charset="utf-8"> <input type="text" name="testName" value="" /> <input type="text" name="testName" value="" /> <input type="submit" value="提交" /> </form> 给出结果是如下。 testName=1&testName=2 谢谢。 |
14
slixurd 2016-01-25 13:47:26 +08:00
Java 确实可以这么玩,而且还很普遍
例如在 SpringMVC 的 Controller 中: getList(HttpServletRequest request, @RequestParam(value = "list[]", required = false) Long[] list) |
16
alex321 OP @okampfer 我木有直接格式化 form 为 json 哦,是 @dapang1221 童鞋。
我一般都直接用 $('#form').serialize(),要么 jQuery 的 serializeArray 你试下。。 |
18
virusdefender 2016-01-25 14:19:15 +08:00
公司前端也有这么用的,后端 django 就没法解析,得手动的去取数据,明明可以用 json
|
19
ugg 2016-01-25 14:28:13 +08:00
checkbox 不这么玩还怎么玩?
|
20
slixurd 2016-01-25 14:36:14 +08:00
@alex321 这和语言无关的。这是框架自己的处理。
例如 Spring 的 WebRequest 就封装了这样的方法: /** * Return the request parameter values for the given parameter name, * or {@code null} if none. * <p>A single-value parameter will be exposed as an array with a single element. * @see javax.servlet.http.HttpServletRequest#getParameterValues(String) */ String[] getParameterValues(String paramName); 事实上不管怎么样都能取到数组,不管是不是 array[]这样的键名。就只是对一个 key 取多次值而已。 其它语言的其它框架要处理也不是什么难事,大不了封装一下。 至于 JSON ,除非复杂对象,不然实在没什么必要用 JSON 。 |
21
iyaozhen 2016-01-25 14:42:47 +08:00
关键是你 input 不是这样玩的吧。 name="title" 不就行了,楼主还是比较超前呀。我一开始压根就不知道数组这种用法 2333
|
22
bk201 2016-01-25 14:46:34 +08:00
java 可以这样玩,也可以类似 c#这样玩。但是这不应该是前端自己的问题么,非要用 name 表单提交。
|
24
Tr0y 2016-01-25 15:20:50 +08:00
楼上各位,这不是什么后端语言特有的,这是 w3c 制定的 web 页面提交多维数据的格式(也就是数组),理论上所有的后端环境都可以获取的到。
|
25
ppwangs 2016-01-25 15:25:51 +08:00
我们 java 用框架的时候都是这样:
<input type="text" name="entity[0].title" class="form-control" placeholder="标题" /> <input type="text" name="entity[0].description" class="form-control" placeholder="摘要" /> <input type="text" name="entity[0].url" class="form-control" placeholder="跳转地址" /> <input type="text" name="entity[1].title" class="form-control" placeholder="标题" /> <input type="text" name="entity[1].description" class="form-control" placeholder="摘要" /> <input type="text" name="entity[1].url" class="form-control" placeholder="跳转地址" /> 这样 server 段处理的时候可以获取到一个 entity 的数组。 |
26
zhujinliang 2016-01-25 15:40:57 +08:00
@Tr0y 有相关网址么?
我一直以为是 php 特有的,因为 php 语法允许 $foo[] = 'bar' ,相当于 array_push($foo, 'bar') 另外这个先后顺序有约定么?依据文档出现先后顺序? |
27
falcon05 2016-01-25 15:43:18 +08:00
我一直是这么处理的。。。
|
28
wt12312345 2016-01-25 16:37:14 +08:00
@dapang1221 举四爪同意
|
29
wt12312345 2016-01-25 16:38:08 +08:00
@alex321 这个也可以直接用于 ajax ,只不过和传输 JSON 调用的方法不一样而已。
|
30
slixurd 2016-01-25 18:21:57 +08:00
@Tr0y
吓死我了,然后我赶紧去 W3C 找了个 HTML5 标准看看。 少年你在哪看的 W3C 规范?为什么和我看的不一样 Successful controls have exactly one value, except for select controls and file upload controls, which have zero or more values depending on how many items or files they have selected. http://dev.w3.org/html5/web-forms-2/ |
31
v1024 2016-01-25 18:59:13 +08:00 via iPhone
如果不是为了 noscript 环境,还是异步提交数据吧。
|
32
xiamingchong 2016-01-26 09:50:54 +08:00
这跟 php 有毛关系,任何语言都从标准输入都可以读到,怎么解析都行
|
33
klgd 2016-02-10 17:57:55 +08:00
post 一个数组表单 不这么用要怎么用?
|