十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
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=58channelType=2subTitle=591teststetetsextAttrValueId=599"
那么我们只需这要添加额外的内容:
var dataParam = $("#updateChannelForm").serialize();
例如我想添加sex="男"
dataParam =dataParam +""+"sex=男"
这是因为后台能够直接处理的数据格式,是一种经过序列化的键值对数据,比如前端要向后台提交三个参数,分别是a=1,b=2,c=3,那么后台接收到的数据就应该是a=1b=2c=3(可以看到其实就是每个“键值对”之间用连接)。当我们用get方式提交数据时,参数是直接附加到url后面的,即
xxx.xxx这是域名此略.xxx?a=1b=2c=3
可以看到?后面的正是后台程序能够直接处理的数据格式,所以get方式提交数据的话,就不需要再对参数进行序列化处理了,直接提交即可。
而当我们用post方式提交时,通常我们提交的数据本身就是一个json对象,比如说像这样的:
var data = {a:1, b:2, c:3};
而提交时数据是直接以原始格式存储在body中而不是以键值对的方式附加到url中的,所以后台程序是无法直接识别的,这时候就需要在提交前先把data转换为 a=1b=2c=3 的格式再提交,这就是序列化。
当然,如果数据是通过表单提交的,那么不管是post方式还是get,浏览器会自动进行序列化,无需前端js再做任何处理。
通过$("#form").serialize()可以获取到序列化的表单值字符串。
通过$("#form").serializeArray()输出以数组形式序列化表单值。
统统不满足想得到Json的愿望。堆栈溢出后,找到了一个这样的方法
然后通过JSON.stringify($("#form").serializeObject()); 就可以得到Json内容
1.jquery提交数据的方式:
(1)第一种jquery序列化提交数据方式:
通过id获取的form表单元素.serialize();
(2)第二种模拟form表单提交元素:
$('#form表单id').attr('method','post');
$('#form表单id'').find('input[name="type"]').val(test);
$('#form表单id').find('input[name="dfrom_to1"]').val(dfrom_to);
$('#form表单id').find('input[name="gt_road_new"]').val(gt_road);
$('#form表id').attr('action',AdminLTE.ctx+'/modules/ltegt/findAllCoverAndInterfere.do');
$('#analysisForm').submit();
2.js提交数据的方式:
(1).js提交表单( .submit()方法提交表单 )
function doSearch(){
var action ="%=path%/User_queryAllUser";
document.all.form.action = action;
document.all.form.submit();}
(2).js替代超链接( window.location.href )
input type="button" id="modify" value="修改工号" οnclick="modifyEmp(${ myList.employeeId })"
//js不能起名为modify,为敏感关键字
function modifyEmp( employeeId ){
//employeeId 作为js的参数传递进来
window.location.href = '%=path%/User_openUserUpdate?employeeId='+employeeId;