-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAjax与Comet
More file actions
68 lines (56 loc) · 3.56 KB
/
Ajax与Comet
File metadata and controls
68 lines (56 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
本章内容
使用 XMLHttpRequest
使用 XMLHttpRequest
跨域 Ajax 通信的限制
Ajax技术的核心: XMLHttpRequest 对象(简称XHR)
GET请求
GET 是最常见的请求类型,最常用于向服务器查询某些信息。必要时,可以将查询字符串参数追加
到 URL 的末尾,以便将信息发送给服务器。对 XHR 而言,位于传入 open()方法的 URL 末尾的查询字
符串必须经过正确的编码才行。
而且所有名-值对儿都必须由和号(&)分隔,如下面的例子所示。
POST请求
使用频率仅次于 GET 的是 POST 请求,通常用于向服务器发送应该被保存的数据。POST 请求应该
把数据作为请求的主体提交,而 GET 请求传统上不是这样。POST 请求的主体可以包含非常多的数据,
而且格式不限。
XMLHttpRequest2 级
1. FormData
现代 Web 应用中频繁使用的一项功能就是表单数据的序列化,XMLHttpRequest 2 级为此定义了
FormData 类型。
下面的代码创建了一个 FormData 对象,并向其中添加了一些数据。
var data = new FormData();
data.append("name", "Nicholas");
这个 append()方法接收两个参数:键和值,分别对应表单字段的名字和字段中包含的值。
跨源资源共享 CORS
跨域技术
**图像Ping技术
var img = new Image();
img.onload = img.onerror = function(){
alert("Done!");
};
img.src = "http://www.example.com/test?name=Nicholas";
图像 Ping 最常用于跟踪用户点击页面或动态广告曝光次数。图像 Ping 有两个主要的缺点,一是只
能发送 GET 请求,二是无法访问服务器的响应文本。因此,图像 Ping 只能用于浏览器与服务器间的单
向通信
***JSONP
JSONP 是 JSON with padding(填充式 JSON 或参数式 JSON)的简写,是应用 JSON 的一种新方法,
在后来的 Web 服务中非常流行
JSONP 由两部分组成:回调函数和数据
function handleResponse(response){
alert("You’re at IP address " + response.ip + ", which is in " +
response.city + ", " + response.region_name);
}
var script = document.createElement("script");
script.src = "http://freegeoip.net/json/?callback=handleResponse";
document.body.insertBefore(script, document.body.firstChild);
JSONP 之所以在开发人员中极为流行,主要原因是它非常简单易用。与图像 Ping 相比,它的优点
在于能够直接访问响应文本,支持在浏览器与服务器之间双向通信。不过,JSONP 也有两点不足。
首先,JSONP 是从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代
码,而此时除了完全放弃 JSONP 调用之外,没有办法追究。因此在使用不是你自己运维的 Web 服务时,
一定得保证它安全可靠。
其次,要确定 JSONP 请求是否失败并不容易。虽然 HTML5 给<script>元素新增了一个 onerror
事件处理程序,但目前还没有得到任何浏览器支持。为此,开发人员不得不使用计时器检测指定时间内
Web Sockets
Web Sockets 的目标是在一个单独的持久连接上提供全双工、双向通信。
由于 Web Sockets 使用了自定义的协议,所以 URL 模式也略有不同。未加密的连接不再是 http://
而是 ws://;加密的连接也不是 https://,而是 wss://。在使用 Web Socket URL 时,必须带着这个
模式因为将来还有可能支持其他