Email:longsu2010 at yeah dot net 假设一个场景,现在有一个一百个表单项的表单要提交到服务器端,你可能谨慎的选择了POST方式。再加一个条件,使用websocket与服务器端通信,那么表单提交那
假设一个场景,现在有一个一百个表单项的表单要提交到服务器端,你可能谨慎的选择了POST方式。再加一个条件,使用websocket与服务器端通信,那么表单提交那套用不上了。如果说让你一个一个表单拼接的话,是不是想掏刀子杀人了?
当人谁都会用程序搞定,首先获取到form节点,之后再通过form的elements获取到所有的input之后,之后拼接,之后……
dojo其实已经有这样的东西了,dojo/dom-form模块完成这件事情。
该模块提供的方法如下:
1、fieldToObject:获取表单的值,多选返回的会是一个数组。参数为一个表单的id或者表单dom对象。
2、toObject:根据表单生成一个js对象(JSON对象)。参数为一个form id或者form对象。
3、toQuery:根据表单生成url串,参数同toObject。
4、toJson:根据表单生成JSON字符串。参数同toObject。
以上三个方法中除了第一个以外均需要表单项有name属性。而且type为file、submit、image、reset、button的表单项不会出现在生成的结果中。
来一个简单的例子
<form id="myform"> <input type="text" name="f1" value="v1"> <input type="text" name="f2" value="v2"> <input type="button" name="someButton" value="someValue"> </form>
toObject("myform"):{"f1":"v1","f2":"v2"} toQuery("myform"):"f1=v1&f2=v2" toJson("myform"):'{"f1":"v1","f2":"v2"}'
非常简单,不做过多的说明。