1. Ajax与Comet

1.1 XMLHttpRequest对象

IE5是第一款引入XHR对象的浏览器,IE5中是通过MSXML库中的一个ActiveX对象实现的。因此在IE中可能存在MSXML2.XMLHttp, MSXML2.XMLHttp.3.0, MSXML2.XMLHttp.6.0,要支持旧浏览器,可以使用如下函数:

function createXHR(){

if(typeof XMLHttpRequest != 'undefined'){

return new XMLHttpRequest();

}else if(typeof ActiveXObject != 'undefined'){

if(typeof arguments.callee.activeXString !="string"){

var versions = ['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp'],i,len;

for(i =0 ,len=versions.length;i<len;i++){

try{

new ActiveXObject(versions[i]);

arguments.callee.activeXString = versions[i];

break;

}cath(ex){

}

}

}

return new ActiveXObject(arguments.callee.activeXString);

}else{

throw new Error('NO XHR object.');

}

}

1.2 XHR用法

使用XHR对象,第一个方法是open(),第一个参数表示方法,第二个参数表示请求地址,第三个参数表示是否异步传递数据。

第二步调用send()方法,

第三部根据 返回状态判断执行对应方法

(1). 等到服务器响应后,响应数据会自动填充XHR对象的属性。

l responseText:作为响应主体返回的数据

l responseXML:响应内容是XML DOM文档数据,内容类型是“text/xml”或者“application/xml”

l status:响应的状态

l statusText:响应的状态说明

(2). 针对异步请求,可以检测XHR对象的readyState属性,

l 0:未初始化

l 1:启动

l 2:发送

l 3:接收

l 4:完成

var xhr = createXHR();

xhr.onreadystatechange = function(){ //必须在open方法前指定

if(xhr.readystate == 4){

if((xhr.status >=200 && xhr.status < 300)|| xhr.status == 304){

alert(xhr.responseText);

}else{

alert(‘error’);

}

}

}

xhr.open(‘get’,’ex.php’,true);

xhr.send(null);

1.3 GET请求

var xhr = createXHR();

xhr.onreadystatechange = function(){ //必须在open方法前指定

if(xhr.readystate == 4){

if((xhr.status >=200 && xhr.status < 300)|| xhr.status == 304){

alert(xhr.responseText);

}else{

alert(‘error’);

}

}

}

xhr.open(‘get’,’ex.php?uid=xx’,true); //URL地之后传递参数

xhr.send(null);

1.4 POST请求

var xhr = createXHR();

xhr.onreadystatechange = function() { //必须在open方法前指定

if (xhr.readystate == 4) {

if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {

alert(xhr.responseText);

} else {

alert(‘error’);

}

}

}

xhr.open(‘post’, ’ex.php’, true);

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //发送前指定传输类型

xhr.send(form.data);//参数在send是传输

1.5 跨资源请求

IE8通过XDomainRequest对象支持CORS,其他浏览器通过XHR对象原生支持CORS,图像Ping和JSONP是另外两种跨浏览器通信技术。

21. javacript高级程序设计-Ajax与Comet的更多相关文章

  1. 25. javacript高级程序设计-新兴的API

    1. 新兴的API requestAnimationFrame():是一个着眼于优化js动画的api,能够在动画运行期间发出信号.通过这种机制,浏览器就能够自动优化屏幕重绘操作 Page Visibi ...

  2. 24. javacript高级程序设计-最佳实践

    1. 最佳实践 l 来自其他语言的代码约定可以用于决定何时进行注释,以及如何进行缩进,不过JavaScript需要针对其松散类型的性质创造一些特殊的约定 l javascript应该定义行为,html ...

  3. 23. javacript高级程序设计-数据存储

    1. 数据存储 1.1 cookie HTTP Cookie, cookie,最初用来在客户端存储回话信息. (1). 限制,不同浏览器对特定域名下的cookie 的个数有限制,每个域名下最好不要操过 ...

  4. 22. javacript高级程序设计-高级技巧

    1. 高级技巧 1.1 函数 l 可以使用惰性载入函数,将任何分支推迟到第一个调用函数的时候 l 函数绑定可以让你创建始终在指定环境中运行的函数,同时函数柯里化可以让你创建已经填写了某些参数的函数 l ...

  5. 20. javacript高级程序设计-JSON

    1. JSON JSON是一种数据格式,存在以下三种类型的值: l 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串.数值.布尔值和null,不支持 undefined,例如: ...

  6. 19. javacript高级程序设计-E4X

    1. E4X E4X是对ECMAScript的一个扩展, l 与DOM不同,E4X只用一个类型节点来表示XML中的各个节点 l XML对象中封装了对所有节点都有用的数据和行为.为了表示多个节点的集合, ...

  7. 18. javacript高级程序设计-JavaScript与XML

    1. JavaScript与XML IE采取了下列方式: l 通过ActiveX对象来支持处理XML,而相同的对象也可以用来构建桌面应用程序 l Windows携带了MSXML库,JavaScript ...

  8. 17. javacript高级程序设计-错误处理与调试

    1. 错误处理与调试 l 在可能发生错误的地方使用try-catch方法,可以对错误进行及时的相应 l 使用window.onerror事件处理程序,这种方式可以接受try-catch不能处理的所有错 ...

  9. 16. javacript高级程序设计-HTML5脚本编程

    1. HTML5脚本编程 l 跨文档消息传递API能够让我们在不降低同源策略安全性的前提下,在来至不同的域的文档间传递消息 l 原生拖放功能可以方便的指定某个元素是否可以拖动,并在放置时做出响应.还可 ...

随机推荐

  1. netstat miscellaneousness

    netstat -a (--all) : show both listening and non-listening sockets 默认是不显示正在侦听的进程,只显示已经established的 n ...

  2. PHP输出缓冲(Output Buffering)

    什么是缓冲区? 简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题~其实缓冲区最本质的作用就是,协调高速CPU和相对缓慢的IO设备 ...

  3. IIS服务器运行一段时间后卡死,且无法打开网站(IIS管理无响应,必须重启电脑)

    问题描述: 公司希望使用IIS配合网站显示一些订单跟进的情况并展示出来,所以我们在一台演示的Win7 Pro电脑上安装了IIS,但使用了一段时间后发现每过几天页面就无法正常访问了,而且打开IIS管理器 ...

  4. bootstrap实现弹出窗口

    bootstrap使用modal-dialog实现弹对话框. 一个对话框包含3部分: 对话框头部 modal-header 对话框内容体 modal-body 对话框底部 modal-footer 如 ...

  5. 开关WIFI脚本

    title wifi管理color A@echo on@echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@echo 1.启用并设定虚拟WiFi网卡;@echo 2.开启无线网络; ...

  6. 关于ext3,ext4,xfs和btrfs文件系统性能对比

    关于ext3,ext4,xfs和btrfs文件系统性能对比 应为原文:http://www.ilsistemista.net/index.php/linux-a-unix/6-linux-filesy ...

  7. .net Excel乱码

    .net 生成Excel乱码,如果你一直在乱码,怎么改GB2312和UTF-8也没用,那试试下面的方法吧  HttpContext.Current.Response.AppendHeader(&quo ...

  8. Leonbao:MapKit学习笔记

    以下仅作了解, 实际使用以百度地图居多, 因为百度地图有动态路径规划等接口 MapKit学习笔记    原帖: http://www.cocoachina.com/bbs/read.php?tid-6 ...

  9. jdk 1.7 在ubuntu 环境配置

    在/opt/里解压了jdk 1.7后 设置环境变量 chen@caicai ~ $ vim .profile export JAVA_HOME=/opt/jdk1..0_79 export JRE_H ...

  10. 2016年11月2日--Window.document对象

    一.找到元素: docunment.getElementById("id"):                      根据id找,最多找一个: var a =docunment ...