定义:json 是JavaScript对象表示法。
格式:
var jsonObject ={
"url":"www.baidu.com",
"name":"zkr",
"address":"shanghai"
}
多次嵌套json:
var jsonObject={
"ch":
[
{"names":"怡美家园","data":[2,2,1,1,1,1], "times":[10,11,13,13,21,23]},
{"names":"怡美家园","data":[2,2,1,1,1,1],"times":[10,11,13,13,21,23]}
]
} ;
基本语法:
以值对的形式存在,(名称:值对)key value;
如果值对有多个对象用数组[],每个对象用{}表示,键值对以:分开;
简单的使用例子;
<script type="text/javascript">
var jsonO={
"name":"zkr",
"age":12,
"hight":165
"adress":{
"china":"guo",
"jiangsu":"sheng",
"nanjing":["shi","shenghui"]
}
}
window.onload=function(){
document.getElementById("name").innerHTML=jsonO.name;
document.getElementById("age").innerHTML=jsonO.age;
document.getElementById("hight").innerHTML=jsonO.hight;
alert(jsonO.adress.china);
alert(jsonO.adress["nanjing"]);
}
</script>
<div>
name:<span id="name"></span>
age:<span id="age"></span>
hight:<span id="hight"></span>
</div>
访问json的方式:
通过.的形式,如:jsonO.name;
通过["name"],[数组下标]的形式,如:jsonO["name"] ,jsonO["age"],jsonO["hight"];
对于嵌套的json对象:
可以使用
jsonO.adress.china;
jsonO.adress["nanjing"];
修改json的值
jsonO.adress.china="zhongguo";
jsonO.adress["nanjing"]="shenghui";
删除对象的属性:
delete关键字:
delete jsonO.adress.china;
delete jsonO.adress["nanjing"];
json 中的对象的值是数组:利用索引值来获取;
jsonO.adress.nanjing[1];
修改直接赋值,删除 delete关键字
json 的解析:
function test (){
//创建xhr对象
var xhr;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else {
xhr=new ActivXObject("Mirocsoft.XMLHTTP");
}
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
jsonO=JSON.parse(this.responseText);//json解析
alert(jsonO);
document.getElementById("te").innerHTML=jsonO.sites[0].name;
}
}
xhr.open("GET","/test/text/1.txt","ture");
xhr.send();
}
异常:
解析数据
json中存的是字符串,
无论是date还是function都是以字符串形式存储的,
解析后再次转换为响应的类型。
json不能存储date对象,
如果存储的话要转成字符串
解析后转换成字符串,在转换成date数据。
今天工作第一次听到跨域访问:
使用jsonp:
get可以
定义跨域:
同源策略:
简言之,域名,协议,端口保持一致
域名:
协议:http https
端口:8080
同时访问:http://store.company.com/dir/page.html同源检测结果:
http://store.company.com/dir2/other.html |
成功 | |
http://store.company.com/dir/inner/another.html |
成功 | |
https://store.company.com/secure.html |
失败 | 协议不同 |
http://store.company.com:81/dir/etc.html |
失败 | 端口不同默认端口80 |
http://news.company.com/dir/other.html |
失败 | 主机名不同 |