Jquery表单序列化后添加数据

Jquery表单序列化后添加数据,第1张

serialize()、serializeArray()方法都是jquery用户序列化表单的,用于ajax提交的data值的序列化

在chrome的控制台我们很清楚的看到了serializeArray()返回的是json数组,数组的每个对象都是有json字符串构成,我们可以看到,每个json字符串包括两个键值对,每个键值对都是有name,value组成,其实serializeArray()它把表单里的每个需要提交的dom的name的值赋给json字符串的name,dom的value的值赋给json字符串的value.

那么我们只需这要添加额外的内容:

var dataParam = $("#updateChannelForm").serializeArray()

例如我想添加sex="男"

dataParam.push({"name":"sex","value":"男"}) 就可以了

我们看到serialize()方法把表单里的内容序列化成了字符串

"id=58&channelType=2&subTitle=591teststetets&extAttrValueId=599"

那么我们只需这要添加额外的内容:

var dataParam = $("#updateChannelForm").serialize()

例如我想添加sex="男"

dataParam =dataParam +"&"+"sex=男"

通过$("#form").serialize()可以获取到序列化的表单值字符串。

通过$("#form").serializeArray()输出以数组形式序列化表单值。

统统不满足想得到Json的愿望。堆栈溢出后,找到了一个这样的方法

然后通过JSON.stringify($("#form").serializeObject())就可以得到Json内容

1.addJSONData和addRowData有点区别,后者是绑定在jquery对象的,前者是绑定在标签上的。

用addJSONData时举例:$("#table")[0].addJSONData(data)

用FF可以看到$("#table")[0]上绑定的事件的。

2.addJSONData接受的参数:

这是后台的.net代码

new JObject() {

new JProperty("total","1"),

new JProperty("page","1"),

new JProperty("records","3"),

new JProperty("rows",yourArrayData)

}

可以看到addJSONData接受的并不是一个数组,就是一个json对象,开始一直也困扰在这里。

前台返回的JSON:

{"total":"1","page":"1","records":"3","rows":[{"UserID":1,"UserName":"kp","Password":"123","Domain":null,"RoleID":null},{"UserID":2,"UserName":"kptest","Password":"Kp123","Domain":null,"RoleID":null},{"UserID":3,"UserName":"ricky","Password":"123","Domain":"XSUNT-SH\\dong.geng","RoleID":1}]}

3.还有一点需要注意的,jqgrid需要定义一个jsonReader其中的repeatitems如果不指定为false FF会返回obj is undefined

jsonReader: {

repeatitems: false,

rows: "rows",            

total: "total",

page: "page",

records: "records"

}

4.$("#table").addJSONData(data)的调用位置也值得注意,最后只有在loadComplete中才能加载出数据,gridComplete里不可以,方法外也不行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11962437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存