1、XMLHTTPRequest
  Ajax的一个最大的特点是无需刷新页面便可向服务器传输或读写数据(又称无刷新更新页面),这一特点主要得益于XMLHTTP组件XMLHTTPRequest对象。这样就可以向再发桌面应用程序只同服务器进行数据层面的交换,而不用每次都刷新界面也不用每次将数据处理的工作提交给服务器来做,这样即减轻了服务器的负担又加快了响应速度、缩短了用户等候时间。
  最早应用XMLHTTP的是微软,IE(IE5以上)通过允许开发人员在Web页面内部使用XMLHTTP ActiveX组件扩展自身的功能,开发人员可以不用从当前的Web页面导航而直接传输数据到服务器上或者从服务器取数据。这个功能是很重要的,因为它帮助减少了无状态连接的痛苦,它还可以排除下载冗余HTML的需要,从而提高进程的速度。Mozilla(Mozilla1.0以上及NetScape7以上)做出的回应是创建它自己的继承XML代理类:XMLHttpRequest类。Konqueror (和Safari v1.2,同样也是基于KHTML的浏览器)也支持XMLHttpRequest对象,而Opera也将在其v7.6x+以后的版本中支持XMLHttpRequest对象。对于大多数情况,XMLHttpRequest对象和XMLHTTP组件很相似,方法和属性也类似,只是有一小部分属性不支持。
XMLHttpRequest的应用:

XMLHttpRequest对象在JS中的应用
var xmlhttp = new XMLHttpRequest();
微软的XMLHTTP组件在JS中的应用
var xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
var xmlhttp = new ActiveXObject(Msxml2.XMLHTTP);

XMLHttpRequest 对象方法

/**
* Cross-browser XMLHttpRequest instantiation.
*/

if (typeof XMLHttpRequest == "undefined") {
XMLHttpRequest = function () {
var msxmls = ["MSXML3", "MSXML2", "Microsoft"]
for (var i=0; i < msxmls.length; i++) {
try {
return new ActiveXObject(msxmls[i]+".XMLHTTP")
} catch (e) { }
}
throw new Error("No XML component installed!")
}
}
function createXMLHttpRequest() {
try {
// Attempt to create it "the Mozilla way"
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
// Guess not - now the IE way
if (window.ActiveXObject) {
return new ActiveXObject(getXMLPrefix() + ".XmlHttp");
}
}
catch (ex) {}
return false;
};

XMLHttpRequest 对象方法

方法 描述
abort() 停止当前请求
getAllResponseHeaders() 作为字符串返问完整的headers
getResponseHeader("headerLabel") 作为字符串返问单个的header标签
open("method","URL"[,asyncFlag[,"userName"[, "password"]]]) 设置未决的请求的目标 URL, 方法, 和其他参数
send(content) 发送请求
setRequestHeader("label", "value") 设置header并和请求一起发送

XMLHttpRequest 对象属性

属性 描述
onreadystatechange 状态改变的事件触发器
readyState 对象状态(integer):
0 = 未初始化
1 = 读取中
2 = 已读取
3 = 交互中
4 = 完成
responseText 服务器进程返回数据的文本版本
responseXML 服务器进程返回数据的兼容DOM的XML文档对象
status 服务器返回的状态码, 如:404 = "文件末找到" 、200 ="成功"
statusText 服务器返回的状态文本信息

   2、JavaScript
  JavaScript是一在浏览器中大量使用的编程语言,,他以前一直被贬低为一门糟糕的语言(他确实在使用上比较枯燥),以在常被用来作一些用来炫耀的小玩意和恶作剧或是单调琐碎的表单验证。但事实是,他是一门真正的编程语言,有着自已的标准并在各种浏览器中被广泛支持。
   3、DOM
  Document Object Model。
  DOM是给 HTML 和 XML 文件使用的一组 API。它提供了文件的结构表述,让你可以改变其中的內容及可见物。其本质是建立网页与 Script 或程序语言沟通的桥梁。
  所有WEB开发人员可操作及建立文件的属性、方法及事件都以对象来展现(例如,document 就代表“文件本身“这个对像,table 对象则代表 HTML 的表格对象等等)。这些对象可以由当今大多数的浏览器以 Script 来取用。
  一个用HTML或XHTML构建的网页也可以看作是一组结构化的数据,这些数据被封在DOM(Document Object Model)中,DOM提供了网页中各个对象的读写的支持。
   4、XML
  可扩展的标记语言(Extensible Markup Language)具有一种开放的、可扩展的、可自描述的语言结构,它已经成为网上数据和文档传输的标准。它是用来描述数据结构的一种语言,就正如他的名字一样。他使对某些结构化数据的定义更加容易,并且可以通过他和其他应用程序交换数据。
Ajax的优势

1、减轻服务器的负担。因为Ajax的根本理念是“按需取数据”,所以最大可能在减少了冗余请求和响影对服务器造成的负担;
  2、无刷新更新页面,减少用户实际和心理等待时间;
  首先,“按需取数据”的模式减少了数据的实际读取量,打个很形象的比方,如果说重载的方式是从一个终点回到原点再到另一个终点的话,那么Ajax就是以一个终点为基点到达另一个终点;


图5-1


图5-2

  其次,即使要读取比较大的数据,也不用像RELOAD一样出现白屏的情况,由于Ajax是用XMLHTTP发送请求得到服务端应答数据,在不重新载入整个页面的情况下用Javascript操作DOM最终更新页面的,所以在读取数据的过程中,用户所面对的也不是白屏,而是原来的页面状态(或者可以加一个LOADING的提示框让用户了解数据读取的状态),只有当接收到全部数据后才更新相应部分的内容,而这种更新也是瞬间的,用户几乎感觉不到。总之用户是很敏感的,他们能感觉到你对他们的体贴,虽然不太可能立竿见影的效果,但会在用户的心中一点一滴的积累他们对网站的依赖。
  3、更好的用户体验;
  4、也可以把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,节约空间和带宽租用成本;
  5、Ajax由于可以调用外部数据;
  6、基于标准化的并被广泛支持和技术,并且不需要插件或下载小程序;
  7、Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离);
  8、对于用户和ISP来说是双盈的。

Ajax的问题
1、一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax;
  2、用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是让人头痛的事;
  3、Ajax的无刷新重载,由于页面的变化没有刷新重载那么明显,所以容易给用户带来困扰――用户不太清楚现在的数据是新的还是已经更新过的;现有的解决有:在相关位置提示、数据更新的区域设计得比较明显、数据更新后给用户提示等;
  4、对流媒体的支持没有FLASH、Java Applet好;
 

Ajax读书笔记(四)相关推荐

  1. 《关键对话——注意观察,如何判断对话氛围是否安全》读书笔记(四)

    <关键对话--注意观察,如何判断对话氛围是否安全>读书笔记(四) 在对话过程中,既要关注对话内容(即讨论的主题),也要观察对话气氛(即参与者的反应).越早意识到你和对方退出了对话机制,就越 ...

  2. 《编程之美》读书笔记(四): 卖书折扣问题的贪心解法

    <编程之美>读书笔记(四):卖书折扣问题的贪心解法 每次看完<编程之美>中的问题,想要亲自演算一下或深入思考的时候,都觉得时间过得很快,动辄一两个小时,如果再把代码敲一遍的话, ...

  3. 3d游戏设计读书笔记四

    3d游戏设计读书笔记四 一.基本操作演练[建议做] 下载 Fantasy Skybox FREE, 构建自己的游戏场景 a. 在AssetStore中搜索Fantasy Skybox FREE并下载. ...

  4. 《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

    来源:http://www.cnblogs.com/edisonchou/p/3809839.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  5. 《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件

    前面两篇文章介绍了淘宝的发展历程.Java时代的变迁和淘宝开始创新技术:              <淘宝技术这十年>读书笔记 (一).淘宝网技术简介及来源              &l ...

  6. 《李元芳履职记》读书笔记四 (完结)

    决策不能拍脑袋 管理者不仅仅依靠"拍脑袋"进行决策,而是要用科学的方法加以指导: (决策流程) 工作分派就该这样做 管理者在分派下属工作时,不能"随性",而应该 ...

  7. MDX Step by Step 读书笔记(四) - Working with Sets (使用集合)

    1. Set  - 元组的集合,在 Set 中的元组用逗号分开,Set 以花括号括起来,例如: {([Product].[Category].[Accessories]),([Product].[Ca ...

  8. 读书笔记四 高级光照PBR

    微表面模型参考资料:https://blog.uwa4d.com/archives/Study_PBR.html 更精确的微表面模型GGX参考资料:https://blog.uwa4d.com/arc ...

  9. 转~MDX Step by Step 读书笔记(四) - Working with Sets

    查阅我的其它有关 MDX 的学习笔记 - <<Microsoft SQL Server 2008 MDX Step by Step>> 学习笔记连载目录 1. Set  - 元 ...

  10. 《大型网站技术架构》-读书笔记四:高可用架构

    一.网站可用性的度量与考核 1.可用性度量:通常用多少个9来形容网站的可用性 2.可用性考核:可用性指标是网站架构设计的重要指标,对外是服务承诺,对内是考核指标.  二.高可用的网站架构 三.高可用的 ...

最新文章

  1. AI in RTC 创新挑战赛 | 超分辨率挑战开始了!
  2. HDOJ2021 ( 发工资咯:) ) 【水题】
  3. falcon框架_如何使用Falcon构建RESTful API
  4. java 导出文件编码,java 导出文件编码问题
  5. Linux下SHELL的PS1变量简介
  6. Spring从Bean获取的实例从单例变成多例(IOC依赖注入)
  7. Linux iptables防火墙详解(三)——iptables匹配条件
  8. AngularJS scope 作用域的问题
  9. 2021-06-18 链接标签
  10. LLBLGen Pro v4.2_Patch+Keygen
  11. java程序开发的流程_Java程序开发流程(图文解说版)
  12. javaweb零食商城系统设计与实现(ssm项目)(含论文和源码)
  13. 向网页中插入透明Flash的方法和技巧
  14. DTcms二次开发心得
  15. 计算机组装与维修要学哪些,计算机组装与维修教学基本要求
  16. B站视频下载方法之--手机下载后再转移至电脑
  17. 用计算机美化演讲稿过程,计算机应用基础第10章--PowerPoint应用—制作论文答辩演讲稿.ppt...
  18. 如何快速部署企业私有云存储
  19. Java教学视频全集,活见久
  20. kafka reassign 限速_为什么德国的高速就能不限速?

热门文章

  1. elasticsearch 出现all shards failed异常?
  2. mdf导入虚拟主机mysql_MYSQL导入mdf文件
  3. 网吧里电脑提示计算机内存不足,网吧电脑显示虚拟内存不足该怎么办呢
  4. Oracle中国区大裁员:昔日辉煌不再,退出中国市场?
  5. Pyhon 登陆邮箱
  6. Arduino ESP32 看门狗定时器
  7. ERROR: Cannot uninstall ‘certifi‘. It is a distutils installed project and thus we cannot accurately
  8. Python生成器教程
  9. 2015年6月26日-ps图层蒙版
  10. labview 游戏 打地鼠