Ajax是无需刷新页面就能从服务器获取数据的一种方法。
首先,负责Ajax运作的核心对象是XMLHttpRequest(XHR)对象,虽可能存在实现差异,但是XHR对象的基本用法在各浏览器间还是相对规范的,因此可以放心使用;
XHR为通信设置了“相同的域,相同的端口,相同的协议”这一限制,只能实现同源通信,否则会引发安全错误。
Ajax跨域:CORS(跨源资源共享)定义了在访问跨源资源时,浏览器与服务器端的沟通方式。它的思想是使用自定义的HTTP头部让浏览器与服务器进行沟通。
CORS的实现:IE中引入了XDR类型,与XHR类似,但是可以实现跨域通信;其它浏览器都实现了通过XHR对CORS的原生支持。
CORS通过Preflighted Request的透明服务器验证机制支持开发人员使用自定义的头部、GET或POST之外的方法,以及不同类型的主体内容。
Ajax还可以通过使用<img>标签、JSONP等方式实现跨域通信。
img实现跨域方式是在线广告跟踪浏览量的主要方式,以下是通过<img>实现的例子:
var Img=new Image();
img.οnlοad=img.οnerrοr=function(){
alert("OK");
}
img.src="http://www.em.com/work";
JSONP是通过动态<script>元素来使用的,使用时可以为src属性指定一个跨域URL。
eg.function Response(response){
alert(response.ip+" "+response.city);
}
var script=document.createElement("script");
script.src="http://em.com/json/";
document.body.insertBefore(script,document.body.firstChild);
Ajax是一个非常庞大的主题,还需要我们更多深入地研究。。。