【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
主要内容:
这里是列表文本这里是列表文本使用XMLHttpRequest 对象
使用XMLHttpRequest 事件
跨域ajax 通信的限制
**ajax **
全名:asynchronous javascript + xml 的简写
改变了web诞生依赖单击等待的模式。
ajax的技术核心:XMLHttpRequest 对象(简称 XHR)。
这是微软引进的一个特性,在这之前ajax的 通信必须借助一些hack 手段进行。
XHR 为向服务器发送请求和接收服务器的响应提供了一系列的接口。能够以异步的方式从服务器获取更多信息。也就是说可以使用XHR 获取新数据,然后通过DOM将数据插入到页面中。
此外,虽然名字中包含XHR,但 ajax通信与数据格式无关,获得的数据不一定就是xml数据。
历史:
IE5 是第一款引入XHR的浏览器 。在IE5中 XHR对象是通过MSXML库中的一个ActiveX对象实现的。
在IE5中 可能遇到三种不同版本的XHR 对象。即 MSXML2.XMLHttp、 MSXML2.XMLHttp.3.0、 MSXML2.XMLHttp.6.0。
IE7之前的 版本
要使用MSXML库中的XHR 对象,需要编写一个函数: 这个函数会根据可用的MSXML库创建最新版本的XHR对象。
function createXHR() {
if(typeof arguments.callee.activeString != "string") {
var versions = ["MSXML2.XMLLHttp.6.0","MSXML2.XMLLHttp.3.0","MSXML2.XMLLHttp"],
i,len;
for (i=0,len= versions.length;i< len;i++) {
try{
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (ex) {
//跳过
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
}
var xhr = createXHR();
IE7+、FireFox、Operra、Chrome和Safari都支持原生的XHR对象
可以使用XHR构造函数
var xhr = new XMLHttpRequest();
对两者都支持
function createXHR() {
if (typeof XMLHttpRequest != "undefined"){
return new XMLHttpRequest();
} else if (typeof ActiveXObject != "undefined") {
if(typeof arguments.callee.activeXString != "string"){
var versions=["MSXML2.XMLLHttp.6.0","MSXML2.XMLLHttp.3.0",
"MSXML2.XMLLHttp"],
i,len;
for (i=0,len=versions.length;i<len;i++) {
try{
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (ex){
//跳过
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
} else {
throw new Error("NO XHR object available");
}
}
var xhr = createXHR();
这个程序,首先检测原生的XHR是否存在,如果存在则返回其新实例。 如果不存在,则检测ActiveX 对象。如果这两个都不存在,则抛出一个错误。
来源:oschina
链接:https://my.oschina.net/u/3053700/blog/794187