当前访客身份:游客 [ 登录 | 加入开源中国 ]

代码分享

当前位置:
代码分享 » JavaScript  » 网页设计与交互
分享到: 
收藏 +0
1

struts2的自动将参数封装成form对象非常强大,但是在用js提交数据时,jQuery的ajax方法并不能将复杂对象转换成struts2期待的格式。
加入对象为{name:'tom','class':{className:'class1'},classMates:[{name:'lily'}]}
struts2期待的格式是 name=tom&class.className=class1&classMates[0].name=lily

标签: jQuery

代码片段(1) [全屏查看所有代码]

1. [代码]javascript复杂对象转url参数字符串     跳至 [1] [全屏预览]

var parseParam=function(param, key){
	var paramStr="";
	if(param instanceof String||param instanceof Number||param instanceof Boolean){
		paramStr+="&"+key+"="+encodeURIComponent(param);
	}else{
		$.each(param,function(i){
			var k=key==null?i:key+(param instanceof Array?"["+i+"]":"."+i);
			paramStr+='&'+parseParam(this, k);
		});
	}
	return paramStr.substr(1);
};

//调用:
var obj={name:'tom','class':{className:'class1'},classMates:[{name:'lily'}]};
parseParam(obj);
结果:"name=tom&class.className=class1&classMates[0].name=lily" 
parseParam(obj,'stu');
结果:"stu.name=tom&stu.class.className=class1&stu.classMates[0].name=lily" 


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(4)

  • 1楼:李惟 发表于 2011-12-13 09:43 回复此评论
    如果要把
    stu.name=tom&stu.class.className=class1&stu.classMates[0].name=lily

    转换为Object要怎么做呢?

  • 2楼:李朝勇1 发表于 2013-08-30 15:04 回复此评论
    找出了你的BUG,var obj = {obj:{"name":"李朝勇",arr:['test1','test2']}};
    alert(parseParam(obj));
  • 3楼:李朝勇1 发表于 2013-08-30 15:04 回复此评论
    自己试下呢
  • 4楼:微凉的风 发表于 2016-05-25 09:15 回复此评论

    引用来自“李朝勇1”的评论

    找出了你的BUG,var obj = {obj:{"name":"李朝勇",arr:['test1','test2']}};
    alert(parseParam(obj));
    亲测,没有问题,完全符合struts2的语义
开源从代码分享开始 分享代码
微凉的风的其它代码 全部(1)...