head rush ajax chapter1 Ajax

Head Rush Ajax 本书特点也是好书的特点:
1.多用图表 2.以对话的形式描述 3.用不同的方式重复  4.做活动,做事情时的学习效果比读东西的效果更佳,把习题变成挑战 5.用故事而不是书面语
读书方法:慢慢来,理解越多,必须强记的就越少,多思考,想象有人在问你这个问题,你如何回答,多做练习,写下心得笔记,多喝水,给大脑时间处理新知识,把要理解的东西说出来,解释给别人听。当大脑觉得负荷过重时适当休息,用心感受让大脑知道这一切很重要,任何感觉对学习效果都有帮助。
Asynchronous Javascript and XML
传统web是一次请求服务器产生一个新的页面,然后重载整个页面。
Ajax中JavaScript负责与server对话,只改变页面中需要响应的部分,取代传统的web表单。异步工作:JS送出请求给server后,仍然可以在表单中填入数据,代码只更新需要改变的部分。
<div>可以持有相关元素的容器元素,可以使用一个CSS规则统一所有样式
<span>可以装饰文本且不必开始一个新的段落或块
JavaScript可以使用<标签>的id,从而实现局部控制。
Ajax应用程序中,服务器通常只会送出你需要的数据,而没有其他的HTML。可以使用JS发出同步或异步请求。浏览器一直都知道请求处于何种状态,JavaScript可以从readystate取得这种信息。
使用JS对象做出请求,而不是提交表单,真正的请求与响应是由Web浏览器处理,而不是直接由JavaScript代码处理。一旦Web浏览器得到异步请求的响应,就会运行一个回调函数(callback function),
1.调用createRequest()创建一个新的请求对象request
2.搞清楚需要连接到哪个URL,以取得数据request.open("GET",url,true)
3.设定请求对象以产生链接
4.请求更新过的数据 request.send(null);
5.在页面中激发请求事件 onClick="getBoardssold()"
6.浏览器向server发出请求;之后浏览获得server的响应,存储在请求
7.根据请求状态的改变触发相应的处理函数 request.onreadystatechange=函数名
8.处理函数得到的响应数据 var new = request.responseText;
9.通过DOM动态更新相关元素数值
由于请求有多个状态因此可以在处理函数前,先判断是否达到完成响应状态 if(request.readystate==4)
得到一个元素 var price1 = document.getElementById("price");
对于表单字段才有value属性,一般的元素则没有。 document通过元素id访问每个元素
function getCustomerInfo(){
var phone = document.getElementById("phone").value;
createRequest();  //创建请求对象
var url="lookup Customer.php?phone="+escape(phone);  //双引号,修改后会产生安全问题
request.open("GET",url,true);
request.onreadystatechange=updatePage;
request.send(null);  //除了url不用发送别的东西    
}
html中<head>块中的任何JavaScript代码会在页面加载前执行,只要browser发现JS代码(独立于函数之外静态JS)就会被运行,JS的escape()函数可以将不合法的字符用其他方式替换掉如空格被转为%20
回调:一个事件发生时所触发的那个函数
readystate: 0:尚未被初始化的连接 在open之前 1:open之后,则已经初始化  2. 处理中的响应  3:取得服务器响应,但无法使用 4:server的响应就续,可以通过reponseText属性取得响应数据。浏览器一直都知道请求处于何种状态,而JavaScript可以取得这些信息
浏览器的多此一举:如果你对服务器端程序作出请求,IE会持续追踪你所请求的URL,然后如果你又对相同的URL发出请求(且数据一样)IE会认定你想得到相同的响应,所以IE不会发出此请求,而是把上次请求的响应(在缓存中)拿出来重复使用,所以可以在url中加入虚拟的参数从而改变url例如:
url = url + "?dummy="+new Date().getTime();
当然不是所有的请求都要这样处理,如通过电话确定地址,相同的电话得到相同的对应的地址会更快些。
对于IE请求对象是ActiveXObject使用Msxml2.XMLHTTP或Microsoft.XMLHTTP而其他浏览器是XMLHttpRequest
request.state :请求的就绪状态
request.status==200 :用来报告来自服务器的状态码
如果请求的url在server上找不到,浏览器一定还会运行回调函数,这样才能对server的响应进行处置。
Ajax工具包: prototype, Dojo    JS UI: script.ac.ulo.us,  Rico  Dom查看器(inspector)

posted @ 2010-04-15 19:16  莫忆往西  阅读(187)  评论(0编辑  收藏  举报