json使用心得
上周遇到的几个耗时较长的bug
1.写页面iframe置换元素找不到,发现是缺少范围,加一行参数"window.parent.document"表示在父亲元素范围中查找(根本原因是自己查找自己找不到)
$("#frame",window.parent.document).attr("src","QoS_fake.html");
2.webstorm上面写得静态页面挂在c9系统下报404,原因是以为在eclipse下使用的还是相对路径,
举个例子,为什么requestmapping是这样:/action/layer1/layer2/test:多加了好多层?
是因为如果在页面中引用其他文件,比如echarts
<script src="../../../ui/echarts-2.2.7/build/dist/echarts.js"></script>
这时候根目录从浏览器地址栏最后一个"/"开始逐层向上找一直找到项目名c9(项目名),再向下找文件
归根到底还是相对位置从浏览器最后一个"/"开始解析,所以requestMapping路径配置最好和实际路径相同
小心得:
js代码中嵌入.attr("key","value");可以很方便的修改页面元素样式,用在jquery中是.val()方法
在调试工具里面输入$("calendar").val()可以看到日期控件的值
下面是json总结
首先是js对象
var person={name:"a",age:123} (或者这样 var person=new Object(),person.age=123)
可以访问person.name,发现是a
js对象时原生态的json对象,要声明一个json数组对象,可以这样,方括号代表数组,花括号代表对象
person=[{name:"a",age:123},{name:"b",age:22}]
访问的话:person[1].name,发现是b
person={name:"a",age:123}
这样访问:person[name],发现是a
json对象不用var声明,作用域也更广,是全局变量;这个局指的是方法体内;js对象则是局部变量
json和eclipse结合,由于静态页面和动态代码交互靠字符串:
如一个json字符串:jsonObj3 = “[{name:"a",age:123},{name:"b",age:22}]”
//对象转字符串
jsonStr2 = JSON.stringify(jsonObj3);
//字符串转对象
jsonObj3 = JSON.parse(jsonStr);
$.each(data,function(index,element)){
element[index]
}
其中index不仅可以是数字,也可以是字符串,可以完成遍历
@responsebody
如果是list,list.add("xiaoli");list.add("xiaozhang")转化成["xiaoli","xiaozhang"]
访问list[0]
如果是map,map.put("name","xiaoli");map.put("age","111");转换成{name:xiaoli,age:123}
访问map[name]
最后一个问题,看别人的代码
有如下方法:
$$.parse();
不明白是什么意思?
其实在jcdf.js中
var jcdf = new jcdfObject();
var $$ = jcdf;
也就是说:jcdf是一个js对象,里面有方法,相当于jcdf.parse()方法调用
转帖,关于页面跳转:
一、背景
A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,在D中跳转页面的写法区别如下。
二、JS跳转
window.location.href、location.href 本页面跳转,D页面跳转
parent.location.href 上一层页面跳转,C页面跳转
top.location.href 最外层页面跳转,A页面跳转
三、链接或者form
D页面中有form
<form>: form提交后D页面跳转
<form target="_blank">: form提交后弹出新页面
<form target="_parent">: form提交后C页面跳转
<form target="_top"> : form提交后A页面跳转
四、刷新
parent.location.reload():C页面刷新
window.opener.document.location.reload():C页面刷新(使用子窗口的opener对象来获得父窗口对象)
top.location.reload():A页面刷新