js021-Ajax与Comet
js021-Ajax与Comet
本章内容:
使用XMLHttpRequet对象
使用XMLHttpRequet事件
跨域Ajax通信的限制
Ajax技术的核心是XMLHttpRequet对象
21.1 XMLHttpRequet对象
创建XHR对象:
var xhr = createXHR(); |
21.1.1 XHR用法
在使用XHR对象是,调用的第一个方法是open().该方法接收三个参数:要发送请求的类型(“get”、”post” 等 ),请求的URL和表示是否异步发送请求的布尔值。
xhr.open("get", "example.php", fasle); |
调用open()方法并不会真正发送请求,而是启动一个请求一备发送 |
要发送特定请求,要像如下调用send()方法
xhr.open("get", "example.txt", fasle); xht.send(null); |
send()方法接收一个参数:要作为请求主题发送的数据,如果不需要通过请求主发送数据则用null。
因为该请求是同步的,JS代码会等到服务器响应后才继续执行
21.1.2 HTTP头部信息
默认情况下,在发送XHR请求的同时,还会发送下列头部信息:
头部信息 |
说明 |
Accept |
浏览器能够处理的内容类型 |
Acce-pt-Charset |
浏览器能够显示的字符集 |
Accept-Encoding |
浏览器能够处理的压缩编码 |
Accept-Language |
浏览器当前设置的语言 |
Connection |
浏览器与服务器之间的连接类型 |
Cookie |
当前页面设置的任何Cookie |
Host |
发出请求的页面所在的域 |
Referer |
发出请求的页面的URI |
User-Agent |
浏览器的用户代理字符串 |
21.1.3 GET请求
使用get请求时经常会发生错误:查询字符串的格式有问题。
查询字符串的没个参数名称和值都必须使用encodeURIComponent()进行编码,然后才能放到url的末尾。而且所有的名-值对都必须用和号(&)分开。
xhr.open("get", "example.php", name1 = value1&name2 = value2); |
21.1.4 post请求
用于向服务器发送应该被保存的数据。Post应该把数据作为请求的主题提交,get请求传统上不是这样的。Post方法可以传入多个参数,且格式不限。
发送post请求的第二部是想sent()方法中传入某些数据。
21.2 XMLHttpRequest 2级
21.2.1 formdata
表单数据序列化。
Formdata为序列化表单以及创建与表单格式相同过得数据提供便利。如下创建了一个formdata对象,并向其添加了一些数据:
var data = new FormData(); data.append ("name", "meimei"); |
append()方法接收两个参数:键和值。分别对应表单字段的名字和字段中包含的值。可以添加任意多个键值对。
21.2.2 超时设定
Timetout 属性,表示请求在等待相应多少好秒后就终止。在给timeout设置一个数值后,如果在规定的事件内浏览器还没有接收到响应,那么就会触发timeout事件,进而会调用ontimeout事件处理程序。
21.2.3 overrideMimeType()方法
调用该方法必须在send()方法之前,才能保证重写相应的MIME类型。
21.3 进度事件
有以下6个进度事件:
事件 |
说明 |
loadstart |
在接收到响应数据的第一个字节时触发 |
progress |
在接收响应期间持续不断的触发 |
error |
在请求发生错误是触发 |
abort |
在因为调用abort()方法而终止连接时触发 |
load |
在接收到完整的相应数据时触发 |
loadend |
在通信完成或者触发error、abort或load事件后触发。 |
21.3.1 load事件
21.3.2 progress事件
21.4 跨资源共享
21.4.1 IE对CORS 的实现
XDR(XDomainRequest)类型,该对象与XHR相似。以下是XDR和XHR之间的不同之处
cookie不会随请求发送,也不会随响应器返回; |
只能设置请求头部信息中的Content-Type字段; |
不能访问响应头部信息 |
只支持get和post请求 |
本章看不下去了,周四前再来补上来
声明:该博客由http://www.cnblogs.com/lal-fighting/原创发表,未经作者允许,不得私自转载抄袭!!!
js021-Ajax与Comet的更多相关文章
- 21. javacript高级程序设计-Ajax与Comet
1. Ajax与Comet 1.1 XMLHttpRequest对象 IE5是第一款引入XHR对象的浏览器,IE5中是通过MSXML库中的一个ActiveX对象实现的.因此在IE中可能存在MSXML2 ...
- [网页设计]Ajax、Comet与Websocket--转
从http协议说起 1996年IETF HTTP工作组发布了HTTP协议的1.0版本 ,到现在普遍使用的版本1.1,HTTP协议经历了17 年的发展.这种分布式.无状态.基于TCP的请求/响应式.在 ...
- Ajax、Comet与Websocket
从 http 协议说起 1996年IETF HTTP工作组发布了HTTP协议的1.0版本 ,到现在普遍使用的版本1.1,HTTP协议经历了17 年的发展.这种分布式.无状态.基于TCP的请求/响应式 ...
- Ajax、Comet、Websocket、SSE
从 http 协议说起 1996年IETF HTTP工作组发布了HTTP协议的1.0版本 ,到现在普遍使用的版本1.1,HTTP协议经历了17 年的发展.这种分布式.无状态.基于TCP的请求/响应式 ...
- 探求网页同步提交、ajax和comet不为人知的秘密(上篇)
标题里的技术都是web开发里最常见的技术,但是我想这些常用的技术有很多细节是很多朋友不太清楚的,理解这些细节是我们深入掌握这些技术的一把钥匙,今天我就讲讲我使用这些技术时体会到的这些细节. 同步提交是 ...
- HTTP 笔记与总结(9)分块传输、持久链接 与 反向 ajax(comet / server push / 服务器推技术)
反向 ajax 又叫 comet / server push / 服务器推技术 应用范围:网页聊天服务器,例如新浪微博在线聊天.google mail 网页聊天 原理:一般而言,HTTP 协议的特点是 ...
- Ajax、Comet、HTML 5 Web Sockets技术比较分析
最近因为考虑研究B/S结构网站即时消息处理 参考了 JAVA怎么样实现即时消息提醒http://bbs.csdn.net/topics/330015611http://www.ibm.com/deve ...
- 《JAVASCRIPT高级程序设计》Ajax与Comet
Ajax,是Asynchronous JavaScript + XML的简写,这一技术能向服务器请求额外的技术而无需卸载页面,会带给用户更好的体验.Ajax的核心是XMLHttpRequest对象.为 ...
- Ajax 与 Comet
Ajax技术的核心是XMLHttpRequest对象(简称XHR). XMLHttpRequest对象 在浏览器中创建XHR对象要像下面这样,使用XMLHttpRequest构造函数. var xhr ...
- 《JavaScript》高级程序设计第21章:Ajax和Comet,jsonp
一.创建XMLHttpRequest对象 二.XHR的用法 五.跨域资源共享 六.其他跨域技术七.安全七.安全 1. 图像Ping 2. JSONP(JSON with padding,填充式JSON ...
随机推荐
- rabbitmq 相关方法
//连接$conn_args = array( 'host'=>'127.0.0.1' , 'port'=> '5672', 'login'=>'guest' , 'password ...
- C#高级特性_Lambda
“Lambda 表达式”(lambda expression)是一个匿名函数 省略delegate,甚至省略参数类型: 直接用(参数)=> {语句或表达式} 例如: button1.Click ...
- eclipse的插件安装
如何安装:http://my.oschina.net/linjunlong/blog/126961 插件安装方法:eclipse和myeclipse版本不一样,略有区别 在线安装: 第一种:知道在线安 ...
- 使用iframe标签结合springMvc做文件上传
1.iframe.jsp <body> <h1>测试iframe文件上传</h1> <!-- 1.要求表单的target属性名称与iframe的name名字一 ...
- Mycat+Mysql 插入数据报错 i[Err] 1064 - partition table, insert must provide ColumnList
使用Navicat连接Mycat 8066 成功插入了分库表和全局表 1.全局表 sql如下: '); '); '); 插入成功! 2.分库表 sql如下: ', null, null, null, ...
- Java对象的访问
对象访问在Java语言中无处不在,即使最简单的访问也涉及Java栈.Java堆.方法区这三个重要的内存区域中. 例:Object obj = new Object(); Object obj ...
- elasticsearch与mongodb分布式集群环境下数据同步
1.ElasticSearch是什么 ElasticSearch 是一个基于Lucene构建的开源.分布式,RESTful搜索引擎.它的服务是为具有数据库和Web前端的应用程序提供附加的组件(即可搜索 ...
- [转] Java序列化与反序列化
原文地址:http://blog.csdn.net/wangloveall/article/details/7992448 Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java ...
- hibernate-DetachedCriteria实现关联表条件复查
表结果如下 CREATE TABLE `ent_lable` ( `idStr` ) NOT NULL, `pk_1` ) NOT NULL, `pk_2` ) NOT NULL, PRIMARY K ...
- unittest测试驱动之HTMLTestRunner.py
对于自动化来说,测试报告是必须的,在敏捷化的团队中,团队中的成员需要自动化这边提供自动化的测试报告,来判断系统的整体质量以及下一步的测试策略.单元测试库生成测试输出到控制台的窗口上,但是这样的结果看起 ...