我有一系列代表不同形式的输入:
<form id="myform">
<div id="item1">
<label> Name </label><input name="item1" type="text" value=""/>
</div>
<div id="item2">
<label> Name </label><input name="item2" type="text" value=""/>
</div>
<div id="item3">
<label> Name </label><input name="item3" type="text" value=""/>
</div>
</form>
<script>
$.post("/url/", $("#myform").serialize(), function(){});
</script>
Run Code Online (Sandbox Code Playgroud)
当帖子发生时,是否保证我会收到表格中显示的订单数据?我已经测试了它,它确实按顺序返回item1,item2,item3,但是可以安全地假设吗?
这是一个棘手的问题.该serialize文件并没有说明任何顺序,但不会说:
...以标准的URL编码表示法创建文本字符串.
该表示法的RFC,RFC 1867,声明:
表单的每个字段按其在表单中出现的顺序发送,作为多部分流的一部分.
使用真正旧版本的jQuery(v1.2.1)和当前版本(v1.11.0)的经验结果都显示了保留的顺序.
所以我想说即使jQuery文档没有明确说明,它对"标准URL编码符号"的引用与RFC和行为的稳定性相结合表明你可以依赖它.如果要改变(这似乎很不可能的,jQuery的,一般不会在文档顺序的东西),我认为它可以合理地认为是一个错误.