日期:2014-05-16  浏览次数:20384 次

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是事件句柄,赋给这个事件句柄的是一个函数,这个函数根据客户端和服务器端之间状态,调用相应的响应函数,并完成显示服务器端传到客户端的数据的显示功能。

JSON

JSON:即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);