最简单的JSON数据形式就是简单值,字符串必须使用双引号
JSON与JS的对象字面量相比,首先没有声明变量,其次没有末尾的分号,对象的属性必须加双引号,属性的值可以是简单值,也可以是复杂类型的值
JSON数组采用的就是JS中的数组字面量形式,但没有变量和分号,数组可以与对象组合起来构成更复杂的数据集合
JSON对象有两个方法:stringify()和parse()分别用于将JS对象序列化为JSON字符串和把JSON字符串解析为原生的JS值
var book = {
title: “A”,
authors: [
“B"
],
edition: 3,
year: 2011
};
var jsonText = JSON.stringify(book);
实际上该函数还可以接收另两个参数,第一个参数是一个过滤器,可以是个数组,第二个参数是一个选项,表示是否在JSON字符串中保留缩进
如果传入的第二个参数不是数组而是函数,行为会稍有不同,它接收两个参数,属性名和属性值,函数的返回值就是相应键的值,通常用Switch(传进来的属性名),return 对属性值调用的某些方法
第三个参数是缩进空格数,最大为10,只要第三个参数有效,结果会自动包含换行符
JSON.parse()方法也可以接收另一个参数,将在每个键值对上调用
var bookCopy = JSON.parse(jsonTest,function(Key,value){
if (key == “A”){
}else{
}
});
Ajax的技术核心是XMLHttpRequest,使用该XHR对象要调用的第一个方法是open(),接收三个参数:要发送的请求类型,请求的URL和表示是否异步发送请求的布尔值
xhr.open(“get”,“example.php”,false);
URL相对于执行代码的当前页面(也可以是绝对路径),二是调用open()方法并不会真正的发送请求,只是启动请求以备发送,比如还需要xhr.send(null);
send()方法接收一个参数,即要作为请求主体发送的数据,如果不需要则传入null
无论内容类型是什么,响应主体的内容都会保存到responseText属性中,对非XML数据而言,该属性为null
返回的状态码存储在xhr的status属性里
大部分时间发送的都是异步请求,此时可以检测XHR对象的readyState属性,该属性表示当前活动阶段
0:未初始化,尚未调用open()方法
1:启动,已open()但尚未send()
2:发送,已send()但尚未收到响应
3:接收,已经收到部分数据
4:完成,已经收到全部数据,可以在客户端使用
readyState每一次变化都会触发一次readyStatechange事件
overrideMimeType()被纳入XMLHttpRequest2级规范中,用来重写服务器返回的MIME类型,因为返回响应的MIME类型决定了XHR对象如何处理它,而且该方法的调用需在send()方法之前
进度事件有以下六个
loadstart progress error abort load loadend