AJAX和JSON的一些理解
正在学习JSON和AJAX,记录下自己的理解
AJAX什么是AJAX,这里指异步JS和XML,异步JS是指客户端的JS可以不必停下来等待服务器的响应,相反该JS继续执行,而XML指的是JS用XML去解析从服务器得到的数据,如
xmlDoc=xmlhttp.responseXML//来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性
当然,我们可以使用JSON来解析。
一关于AJAX中的Callback函数的理解
Callback也就是回调函数,我的理解是,我们定义的但是由系统或者是其他函数调用的函数,也就是说是callback 函数是一种以
参数形式传递给另一个函数的函数。
二如何理解AJAX中的异步
javascript不需要等待,JavaScript 会等到服务器响应就绪才继续执行,如果服务器繁忙或缓慢,应用程序会挂起或停止。而异步
我的理解就是,使用事件响应的方式,用一个事件监听器去监听,客户端到服务器端的请求,然后使用响应的函数处理,这个函
数往往完成了显示服务器端数据的功能。比如
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/ajax/demo_get.asp",true);
xmlhttp.send();
}
</script>
</head>
<body>
<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">请求数据</button>
<div id="myDiv"></div>
</body>
</html>
这里onreadystatechange是事件句柄,赋给这个事件句柄的是一个函数,这个函数根据客户端和服务器端之间状态,调用相应的响应函数,并完成显示服务器端传到客户端的数据的显示功能。
JSONJSON:即javascript对象表示法,我的理解是用javascript的语法去表示对象,这样我们就不需要编译器去解析。我们往往使用var
employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" },
{"first":"Frank","last":"Lampard"}
];这样的方式去表达数据,其中[]表示数组,{}表示对象,而用,分隔不同的数据。同时这里的{}就是对象字面量的用法,对象字面量
是一个名值对列表,每个名值对之间用逗号分隔,并用一个大括号括起。各名值对表示对象的一个属性,名和值这两部分之间用
一个冒号分隔。还有数组字面量的用法,它是一个用逗号分隔的值列表。详见
[url]
http://www.cnblogs.com/yxf2011/archive/2012/04/01/2428225.html[/url]
2.
JSON 文件的文件类型是 ".json"
JSON 文本的 MIME 类型是 "application/json"
3.JSON,一般在AJAX中使用,我们从服务器端获得XML文档往往都比较大,而且难以解析,而我们使用JSON来表示对象,就减
少了数据在网络中的传输和解析文档需要的时间。
4.由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。
而类似
var obj = eval ("(" + txt + ")");
中
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语
句(statement)来执行。详见http://www.cnblogs.com/myjavawork/archive/2011/03/10/1979279.html
关于JSON的eval知识,也可以参考http://flare.iteye.com/blog/162878这篇文章,写的挺好
5.另外,一些浏览器也提供了对JSON的原生支持,这是我们就不需要通过eval去解析JSON文本了,比如
var txt = '{"employees":[' +
'{"firstName":"Bill","lastName":"Gates" },' +
'{"firstName":"George","lastName":"Bush" },' +
'{"firstName":"Thomas","lastName":"Carter" }]}';
obj = JSON.parse(txt);